Debugging 使用Cygwin可执行文件中的stackdump

Debugging 使用Cygwin可执行文件中的stackdump,debugging,gdb,cygwin,coredump,insight,Debugging,Gdb,Cygwin,Coredump,Insight,所以我写了错误代码,偶尔会崩溃。。。并创建一个stackdump文件 使用addr2line,我可以通过逐个解码地址来找出程序是如何到达崩溃点的。是否有其他工具可以使用堆栈转储简化调试? 是否有办法在Insight/Gdb中加载此信息?首先,确保在生成时启用了源代码调试(使用-g选项): 然后在崩溃后将转储加载到gdb(或insight,或ddd) 您可以指示Cygwin在发生故障时及时启动gdb调试器。 要实现这一点,请将error\u start=action添加到Cygwin环境变量: e

所以我写了错误代码,偶尔会崩溃。。。并创建一个stackdump文件

使用addr2line,我可以通过逐个解码地址来找出程序是如何到达崩溃点的。是否有其他工具可以使用堆栈转储简化调试?
是否有办法在Insight/Gdb中加载此信息?

首先,确保在生成时启用了源代码调试(使用-g选项):

然后在崩溃后将转储加载到gdb(或insight,或ddd)


您可以指示Cygwin在发生故障时及时启动gdb调试器。 要实现这一点,请将
error\u start=action
添加到Cygwin环境变量:
export CYGWIN=“$CYGWIN error\u start=gdb-nw%1%2”

否则,您可以让Cygwin生成真正的核心转储。

export CYGWIN=“$CYGWIN error\u start=dumper-d%1%2”

并运行
gdb path/to/the/binary path/to/the/core对其进行调试。多亏了。启用了此选项
error\u start=gdb-nw%1%2
,我才让gdb运行,但是退出gdb只会导致它再次启动,我是如何完全退出它的?我必须到外面启动process explorer并在Windows中杀死整个进程树的。@CMCDRANGKAI为了以后的参考,您可以键入“kill”在gdb中终止已调试进程,然后“退出”退出gdb。gdb表示它无法将该文件(后缀为“.stackdump”)识别为核心转储。
gcc -g -o myfile myfile.c
gdb myfile core