我有一个应用程序,在C ++中运行linux,在退出时获取中止信号。 在我寻找代码来寻找问题之前,我需要知道在什么情况下我将从内核获得中止信号。这可以给我正确的调试方向。
请提及应用程序可能获得中止信号的每种可能情况。
@具体执行方案是,
TIA
答案 0 :(得分:3)
当应用程序崩溃时,调试器会给你一行,让你检查线程,变量......
其他解决方案:
根本原因可能是多个:在你的内存空间之外读取,除以0,取消引用无效指针......
答案 1 :(得分:0)
我会尝试在valgrind下运行。甚至在中止之前可能会出现内存错误,而valgrind可能会注意到并告诉您。如果是这种情况,您会发现错误比使用传统调试器(如gdb)更容易。
答案 2 :(得分:0)
中止的原因通常是断言失败
例如
(gdb) bt
#0 0x00000035fbc30265 in raise () from /lib64/libc.so.6
#1 0x00000035fbc31d10 in abort () from /lib64/libc.so.6
#2 0x00000035fbc296e6 in __assert_fail () from /lib64/libc.so.6