Esto es lo que he intentado, pero no parece trabajar:¿Cómo puedo ver la salida de printf dentro de gdb?
(gdb) call printf("%d",6)
$8 = 1
Esto es lo que he intentado, pero no parece trabajar:¿Cómo puedo ver la salida de printf dentro de gdb?
(gdb) call printf("%d",6)
$8 = 1
No se puede ver el resultado porque stdout (FILE *) tiene un búfer de salida. No dará salida a la pantalla hasta que el búfer esté lleno o se encuentre '\ n'.
así que llame printf así:
(gdb) call (int)printf("%d\n", 6)
6
$6 = 2
Por cierto, el "$ 6 = 2", que es el valor del resultado de printf.
Parece que funcionó bien - printf
devuelto 1, lo que indica que se imprime con éxito un solo carácter a la salida estándar.
Tenga en cuenta que la salida estándar no se muestra necesariamente en el mismo terminal donde se ejecuta gdb; se mostrará donde el programa que está depurando tenga su salida estándar (es como si el programa hubiera llamado al printf()
- el comando call
en gdb llama a la función en el contexto del programa).
¿Cómo puedo ver la salida de 'printf'? – assem
@assem: Mire donde 'printf' hubiera desaparecido si el programa lo hubiera llamado. Es posible que realmente desee que el comando gdb 'print' en lugar de 'invocar printf'; por ejemplo,' print argc' imprima el valor de' argc' en el contexto actual. – caf
¡Es bueno saberlo! –