2012-09-05 50 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