所以我写了错误的代码,偶尔会崩溃......并创建了一个 stackdump 文件。
使用 addr2line 我可以通过将地址解码为一个来弄清楚程序是如何到达崩溃点的。是否有替代工具可以使用堆栈转储来简化调试?有没有办法在 Insight/Gdb 中加载这些信息?
您可以指示 Cygwin 在发生故障时及时启动 gdb 调试器。为此,请添加error_start=action
到 Cygwin 环境变量:
export CYGWIN="$CYGWIN error_start=gdb -nw %1 %2"
否则,您可以让 Cygwin 生成真正的核心转储。
export CYGWIN="$CYGWIN error_start=dumper -d %1 %2"
首先,确保您在构建时启用了源代码调试(使用 -g 选项):
gcc -g -o myfile myfile.c
然后在崩溃后将转储加载到 gdb 中(或洞察力,或 ddd)
gdb myfile core