2011-03-25 4 views

답변

7

표준 출력 (FILE *)에 출력 버퍼가 있기 때문에 결과를 볼 수 없습니다. 버퍼가 꽉 차거나 '\ n'이 나올 때까지 화면에 아무 것도 출력하지 않습니다.

그래서 이런의 printf를 호출 BTW

(gdb) call (int)printf("%d\n", 6) 
6 
$6 = 2 

을의 printf 의 결과 값 인 "$ 6 = 2".

+0

잘 알고 있습니다! .. –

1

것 같습니다 - printf가 성공적으로 표준 출력에 하나의 문자를 인쇄 한 것을 나타내는 1을 반환했습니다.

표준 출력은 gdb가 실행되는 동일한 터미널에 반드시 표시되는 것은 아닙니다. 디버깅중인 프로그램이 표준 출력을 가지고있는 곳이면 어디에서나 표시됩니다 (마치 프로그램 자체가 printf() - gdb의 call 명령은 프로그램의 컨텍스트에서 함수를 호출합니다.

+0

'printf'의 출력을 어떻게 볼 수 있습니까? – assem

+0

@assem : 프로그램 자체가 호출했을 때'printf'가 사라 졌을 것입니다. 'call printf '보다는 gdb 명령'print'을 원할 수도 있습니다. 예를 들어'print argc'는 현재 컨텍스트에서'argc'의 값을 출력 할 것입니다. – caf

관련 문제