Как я могу увидеть вывод printf внутри gdb?
Это то, что я пробовал, но, кажется, не работает:
(gdb) call printf("%d",6)
= 1
2 ответов
вы не можете видеть результат, потому что stdout(FILE*) имеет выходной буфер. Он не будет выводить на экран, пока буфер не будет заполнен или не будет обнаружен "\n".
поэтому вызовите printf следующим образом:
(gdb) call (int)printf("%d\n", 6)
6
= 2
кстати, "$6 = 2", который является значение printf.
похоже, он работал нормально -printf
возвратил 1, показывая, что он успешно напечатал один символ для стандартного вывода.
обратите внимание, что стандартный вывод не обязательно отображается в том же терминале, в котором работает gdb - он будет отображаться везде, где программа, которую вы отлаживаете, имеет свой стандартный вывод (это так же, как если бы сама программа вызвала printf()
- the call
команда в gdb вызывает функцию в контексте программы).