コマンドラインの下で、私はecho $を使っていることを知っていますか?私は終了コードを取得します。 gdbでは、 "r"を使ってプログラムを実行し、プログラムが終了するので、gdbはどのようにこの終了コードを取得しますか? gdbの中のコマンドは?gdbはどのようにしてターゲットプログラムの終了コードを取得しますか?
ありがとうございます!
コマンドラインの下で、私はecho $を使っていることを知っていますか?私は終了コードを取得します。 gdbでは、 "r"を使ってプログラムを実行し、プログラムが終了するので、gdbはどのようにこの終了コードを取得しますか? gdbの中のコマンドは?gdbはどのようにしてターゲットプログラムの終了コードを取得しますか?
ありがとうございます!
プログラムが終了し、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
[コード027で終了した劣位1(プロセス3677)] < - 027は実際には小数点以下23桁の27進数です。理由については、https://unix.stackexchange.com/questions/24368/unix-history-return-code-octalを参照してください... – mrexodia
プログラムが終了すると、デバッグセッションの最後に終了コードが表示されます。 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)
は(トムTromeyが答え)GDBで終了値を印刷する方法について、またはどのようGDBについてのご質問ですその価値は内部的に得られますか? –