C++ 在展开堆栈之前获取回溯

C++ 在展开堆栈之前获取回溯,c++,c,linux,gcc,gdb,C++,C,Linux,Gcc,Gdb,我的进程没有在调试器上运行,而是在崩溃发生时生成一个核心文件。 更新:崩溃是由于异常而发生的。从throw()开始,即使在main()范围内也没有处理它 当我附加它并在调试器中运行它时,它确实正确地生成了回溯,但在corefile中却没有 问题可能是操作系统在将控制权传递给terminate之前展开堆栈,因此当terminate生成SIGABT时,它没有关于前一个堆栈的此类信息 我这次崩溃是为了压力记忆测试,所以我不可能在gdb下解决这个问题 怎么办?随便走走 问题可能是操作系统在将控制权传递给

我的进程没有在调试器上运行,而是在崩溃发生时生成一个核心文件。 更新:崩溃是由于异常而发生的。从throw()开始,即使在main()范围内也没有处理它

当我附加它并在调试器中运行它时,它确实正确地生成了回溯,但在corefile中却没有

问题可能是操作系统在将控制权传递给terminate之前展开堆栈,因此当terminate生成SIGABT时,它没有关于前一个堆栈的此类信息

我这次崩溃是为了压力记忆测试,所以我不可能在gdb下解决这个问题

怎么办?随便走走

问题可能是操作系统在将控制权传递给terminate之前展开堆栈

Linux操作系统没有这样的功能

您没有提供相关的详细信息,但核心转储中“坏”堆栈跟踪的两个最常见的原因是:

  • 运行完
    ulimit-c
    并获取截断的核心转储,或
  • 尝试使用不同的系统库来分析
    核心
    。如果您在不同的机器上生成并分析
    核心
    ,或者在这两者之间升级了系统库,则可能会发生这种情况

  • 不,我已经正确设置了这些限制。我将ulimit设置为“unlimited”,这是一个守护程序,因此我导出了守护程序\u COREFILE\u LIMIT,并将其设置为“unlimited”。所以corefile创建了我在/etc/sysctl.conf中提到的目录,它工作正常。很抱歉,我忘了在抛出/发生异常时提到这一点。在例外情况下