我试图找出应用程序中的崩溃问题。崩溃发生在压力测试中。崩溃时,VIRT
约为 19 Gigs,RES
为 2.1 Gigs。值得一提的是,系统拥有3G的物理内存和5G的交换空间。
当应用程序崩溃时,即使加载了正确的符号,核心转储也不会在堆栈跟踪中提供任何符号。但我注意到一个奇怪的行为,调用堆栈的底部为空。
(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 ?? ()
造成这种情况的可能原因是什么?是因为堆栈损坏了吗?
最佳答案
最有可能的选择是某些东西破坏了你的调用堆栈:这可以解释为什么你的调试器显示垃圾以及为什么你的应用程序崩溃。我建议尝试在 valgrind 下运行您的代码.
关于c++ - 为什么栈尾为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754101/