2016-09-23 4 views
1

명령 줄에서 echo $를 사용하는 것을 알고 있습니까? 나에게 종료 코드를 가져다 준다. gdb에서 "r"을 사용하여 프로그램을 실행하면 프로그램이 종료되므로 gdb가이 종료 코드를 어떻게 얻습니까? gdb 안에있는 명령은 무엇입니까?gdb는 어떻게 대상 프로그램의 종료 코드를 검색합니까?

감사합니다.

+0

가 (톰 Tromey 대답) GDB의 종료 값을 인쇄하는 방법에 대한 질문이 아니면 GDB 방법 :

int main() { return 23; } 

은 GDB에서 실행, 내가 얻을 그 가치를 내부적으로 얻는가? –

답변

2

는 프로그램이 종료가, GDB는 종료 코드에 편리 변수 $_exitcode를 설정합니다.

이 그래서 주어진 :

(gdb) run 
Starting program: /tmp/q 
[Inferior 1 (process 3677) exited with code 027] 
(gdb) print $_exitcode 
$1 = 23 
+1

[코드 027로 끝나는 하위 1 (프로세스 3677)] <- 027은 실제로는 십진수 23 자의 27 진수입니다. 이유는 https://unix.stackexchange.com/questions/24368/unix-history-return-code-octal을 참조하십시오 ... – mrexodia

1

프로그램이 종료되면 디버그 세션이 끝날 때 종료 코드 만 출력됩니다. 또는 0 종료 코드에 exited normally을 인쇄하십시오. 이 테스트 프로그램 테스트 디버그 세션을 참조하십시오

#include <stdlib.h> 

int main(int argc, char *argv[]) { 
    return atoi(argv[1]); 
} 

디버그 세션 :

[[email protected] ~]$ gdb -q ./a.out 
Reading symbols from ./a.out...(no debugging symbols found)...done. 
(gdb) r 0 
Starting program: /home/ksemenov/a.out 0 
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.23.1-10.fc24.x86_64 
[Inferior 1 (process 19162) exited normally] 
(gdb) r 1 
Starting program: /home/ksemenov/a.out 1 
[Inferior 1 (process 19166) exited with code 01] 
(gdb) r 6 
Starting program: /home/ksemenov/a.out 6 
[Inferior 1 (process 19167) exited with code 06] 
(gdb)