21

そこで、GDB で C++ アプリケーションを起動し、終了すると、基本的に次のようになります。

[Thread 0x7fff76e07700 (LWP 6170) exited]
[Thread 0x7fff76f08700 (LWP 6169) exited]
[Thread 0x7fff77009700 (LWP 6168) exited] 
...
Program terminated with signal SIGKILL, Killed. The program no longer exists.
(gdb)

なぜこれが起こっているのか文字通りわかりません。バックトレースを実行して、それがどのように終了したかを確認できないのはなぜですか? 誰にもアイデアはありますか?それは決して終わらないはずです:(

ありがとう!

4

4 に答える 4

29

私は文字通りこれが起こっている理由がわかりません、

これは通常、次のいずれかを意味します

  • 他のプロセスが実行したkill -9 <your-pid>、または
  • カーネルOOMキラーは、プロセスが大量のリソースを消費していると判断し、それを終了しました(事実上、カーネルはそれに対して実行されkill -9ました)。/var/log/messages/var/log/syslogUbuntuの亜種では)その痕跡を探す必要があります。カーネルは通常、何らかのプロセスをOOMしたときにメッセージをログに記録します。

バックトレースを実行して、どのように終了したかを確認できないのはなぜですか?

バックトレースを表示するには、プロセスが存在している必要があるためです。存在しない場合、スタックがないため、バックトレースを設定できません

于 2012-09-06T03:22:37.013 に答える
0

私の場合はクラッシュ(AV)でした。GDB が接続されていても、この違反をキャッチできませんでした。
それが役に立てば幸い

于 2013-01-11T15:07:42.230 に答える