2011-03-25 10 views

Respuesta

7

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.

+0

¡Es bueno saberlo! –

1

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).

+0

¿Cómo puedo ver la salida de 'printf'? – assem

+0

@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

Cuestiones relacionadas