2016-09-23 13 views
1

コマンドラインの下で、私はecho $を使っていることを知っていますか?私は終了コードを取得します。 gdbでは、 "r"を使ってプログラムを実行し、プログラムが終了するので、gdbはどのようにこの終了コードを取得しますか? gdbの中のコマンドは?gdbはどのようにしてターゲットプログラムの終了コードを取得しますか?

ありがとうございます!

+0

は(トムTromeyが答え)GDBで終了値を印刷する方法について、またはどのようGDBについてのご質問ですその価値は内部的に得られますか? –

答えて

2

プログラムが終了し、GDBは終了コードにコンビニエンス変数$_exitcodeを設定します。

だから、与えられた:

GDBでそれを実行
int main() { 
    return 23; 
} 

、私が手:

(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) 
関連する問題