在展开堆栈之前获取回溯

get the backtrace before unwinding the stack

本文关键字:获取 回溯 堆栈      更新时间:2023-10-16

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

当我附加它并在调试器中运行它时,它确实会正确生成回溯,但在核心文件中它不会。

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

我正在为压力记忆测试而崩溃,所以我无法在 gdb 下解决这个问题。

怎么办?任何四处走动

问题可能是操作系统在传递控制权以终止之前展开堆栈

Linux 操作系统不做这样的事情。

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

  1. 用完ulimit -c并获取截断的核心转储,或者
  2. 尝试使用与用于生成它的库不同的系统库来分析core。如果您在不同的计算机上生成和分析core,或者如果您在两者之间升级了系统库,则可能会发生这种情况。