c++ - 为什么栈尾为空?

标签 c++ c stack stack-trace coredump

我试图找出应用程序中的崩溃问题。崩溃发生在压力测试中。崩溃时,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/

相关文章:

C++ 在 Qt 中传递 Double 添加数字

c - 运行时错误: signed integer overflow: -1094795586 + -1094795586 cannot be represented in type 'int'

c - LNK2005 在 .c 文件中包含 .h 文件时发生

c++ - 异常处理是否需要面向对象的编程?

c++ - 从 std::string 的开头和结尾删除数字

c++ - 我如何 "clear"std::promise?

c - 为什么指向下一个内存位置的指针有 12 个差异

c - 调用 fclose() 后,该文件多快可用于另一个线程?

c++ - 基于节点的堆栈类(需要同行评审)

c++ - 是否有一个分配器使用 alloca 并且在其他方​​面与 C++ STL 兼容?