2012-09-05 51 views
14

所以我火了GDB的我的C++應用程序,而當它退出,我基本上得到:C++ Linux Binary以信號SIGKILL終止 - 爲什麼? (在GDB加載)

[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) 

我真的不知道爲什麼這是發生,爲什麼我不能做回溯看看它是如何退出的?有人有主意嗎?它應該永遠不會結束:(

謝謝!

回答

22

我真的不知道爲什麼這是發生,

這通常意味着,要麼

  • 一些其他進程執行的kill -9 <your-pid>
  • 內核OOM殺手決定你的進程消耗太多的re來源,並終止它(有效的內核爲它執行kill -9)。您應該查看/var/log/messages(在Ubuntu變體上的/var/log/syslog)以瞭解其中的痕跡 - 內核通常會在OOM進行某些過程時記錄消息。

爲什麼我不能回溯看看它是如何退出的?

因爲要看到回溯,過程必須存在。如果它不存在,它沒有堆棧,所以不能有有回溯。

+0

或者程序員想成爲聰明出於某種原因和一個線程的過程實際上是啓動環境是殺害它自己的程序與SIGKILL。 –

+4

會有另一個日誌我應該檢查(我在Ubuntu的)? – Geesu

+0

@Geesu:check/var/log/syslog – mitchus

0

在我的情況是一個崩潰(AV)。即使加上GDB,我也無法理解這種違規行爲。
希望它有幫助

1

這是可能的進程運行到CPU時間ulimit。請與的ulimit -a從那裏,如果「CPU時間」設置爲任何比「無限」等

+0

這不會導致分段錯誤嗎?這不是一個緩衝區溢出? – yash101

+0

@ yash101爲什麼會導致段錯誤?分段錯誤是指以不允許的方式訪問內存。它與CPU時間無關。 –

+0

我什麼時候發表評論,爲什麼?這個不成立!我覺得好像有些變化! – yash101