为什么堆栈结尾为空?

时间:2012-08-01 07:00:26

标签: c++ c stack stack-trace coredump

我试图弄清楚应用程序中的崩溃。压力测试发生了崩溃。在崩溃时VIRT约为19 Gigs,RES为2.1 Gigs。这是提到系统具有3 Gigs的物理内存和5 Gigs的交换空间。

如果应用程序崩溃,即使加载了正确的符号,核心转储也不会在堆栈中给出任何符号。但我注意到一个奇怪的行为,调用堆栈的底部为空。

(gdb) bt
#0  0x00002adaea9df74d in ?? ()
#1  0x00002aacc94ff700 in ?? ()
#2  0x00000000004f9023 in ?? ()
#3  0x00002aae2b8054e0 in ?? ()
#4  0x00002aae6d9420a0 in ?? ()
#5  0x00002aacc94ff700 in ?? ()
#6  0x0000000000486312 in ?? ()
#7  0x00002aae2b8054e0 in ?? ()
#8  0x00002aacc94ff700 in ?? ()
#9  0x00002aacc94ff440 in ?? ()
#10 0x00002aae6d9420a0 in ?? ()
#11 0x0000000000000000 in ?? ()

可能的原因是什么?是因为堆栈已损坏吗?

1 个答案:

答案 0 :(得分:2)

最有可能的选择是删除调用堆栈:这可以解释调试器显示垃圾的原因以及应用程序崩溃的原因。我建议您尝试在valgrind下运行代码。