我的应用程序崩溃,退出代码为9(SIGKILL)
我从不运行任何命令(例如“kill -9(pid)”或“pkill(进程名称)”)可以杀死正在运行的进程。
在这种情况下,应该从哪里开始调试?
是否有可能导致SIGKILL异常的常见原因?
(它在linux上运行; cent os 7)
最佳答案
@我回答了我自己的问题,以便以后有人获得帮助。
异常是由OutOfMemory引起的。
该进程分配了过多的内存,给OS造成了压力。该操作系统有一个杀手 oom-killer ,为了系统稳定,它会杀死此类进程。 oom-killer使用称为SIGKILL的子弹。
但是,由于SIGKILL是不可见的(无法被应用程序捕获和处理),因此对于包括我在内的某些新手来说,找出崩溃的真正原因并不总是那么容易。
一个好消息是,当杀手杀死您的进程时,它总是将其操作记录在/var/log/messages中。
取决于您的操作系统配置,oom-killer可能根本不会记录任何消息。在这种情况下,您也可以对其进行配置。在Google中搜索rsyslog配置。
Finding which process was killed by Linux OOM killer
关于c++ - C++程序因退出代码: 9 (SIGKILL)而崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40888164/