C++Linux二进制终止信号SIGKILL-为什么?(加载在GDB中)
C++ Linux Binary terminated with signal SIGKILL - why? (loaded in GDB)
所以我在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)
我真的不知道为什么会发生这种情况,为什么我不能追溯一下它是如何退出的?有人有什么想法吗?它永远不会结束:(
谢谢!
我真的不知道为什么会发生这种情况,
这通常意味着
- 某个其他进程执行
kill -9 <your-pid>
,或者 - 内核OOM杀手决定您的进程消耗了太多资源,并终止了它(实际上内核为它执行了
kill -9
)。您应该在/var/log/messages
(Ubuntu变体上的/var/log/syslog
)中查找其踪迹——内核通常在OOM某个进程时会记录一条消息
为什么我不能进行回溯以查看它是如何退出的?
因为为了查看回溯,进程必须存在。如果它不存在,它就没有堆栈,因此不能有回溯。
如果您使用Unix/Linux,您也应该能够在终端上键入dmesg
,并查看进程终止的原因。就我而言,这确实是OOM。这是终止后不久我的内核日志的屏幕截图
进程可能运行到cpu时间ulimit。如果"cpu时间"设置为"无限制"以外的任何值,请从进程实际启动的环境中使用ulimit-a进行检查
在我的案例中发生了崩溃(AV)。即使附上GDB,我也无法捕捉到这种违规行为
希望它能帮助
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- Gdb 未加载要在 fork 使用的源文件
- GDB 在 shell 启动时加载找不到的脚本
- GDB无法加载,因此文件和错误没有此类文件或目录
- 尝试将GDB与MPI一起使用时,自动加载会降低
- C++Linux二进制终止信号SIGKILL-为什么?(加载在GDB中)
- 没有在gdb中加载带有breakpad核心文件的符号
- gdb:在0x2aaaaaaab000添加的符号文件系统提供的 DSO 中找不到可加载的部分
- GDB:我如何找到加载符号(msymbols, psymbols, symbols)的内存总大小?
- 为什么GDB不加载libdl而不是共享库?和堆跟踪不起作用
- gdb:在添加的符号文件系统提供的编号为0x#的DSO中找不到可加载的节
- 如何防止GDB加载(大型)库的调试符号
- 如何为GDB加载额外的库