当运行用 MinGW 编译的程序时,有没有办法生成 gdb 可读的 coredump?

发布于 2024-11-03 22:37:21 字数 285 浏览 1 评论 0原文

我正在尝试调试使用 MinGW 的 gcc 编译的 Windows 程序,该程序仅在 gdb 外部运行时才会出现段错误(可能是某种竞争条件......可爱。)问题是,当程序崩溃并且我'我没有运行GDB,我无法获得堆栈跟踪...我可以选择在程序崩溃时在MSVC中打开该程序,但MSVC无法读取gcc的调试符号,因此它给我的堆栈跟踪是无用。

有没有办法让 Windows 创建一个核心转储,然后我可以在 MinGW 的 gdb 中打开它?或者,有没有办法获取 MSVC 的堆栈跟踪(具有原始地址但没有符号)并使用 gcc 来获取人类可读的跟踪?

I'm trying to debug a Windows program compiled using MinGW's gcc that only ever segfaults when run outside of gdb (probably some race condition... lovely.) The problem is, when the program crashes and I'm not running GDB, I can't get a stack trace... I have the option to open up the program in MSVC when it crashes, but MSVC can't read gcc's debugging symbols and so the stack trace it gives me is useless.

Is there a way to get Windows to create a core dump that I can then later open in MinGW's gdb? Alternatively, is there a way to take MSVC's stack trace (which has raw addresses but no symbols) and use gcc to get a human-readable trace?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美羊羊 2024-11-10 22:37:21

Windows 不创建核心文件(在 Linux 上它们由内核 iirc 转储)
您可以尝试使用 gdb 连接并打开崩溃对话框,但我怀疑

如果您使用 msvc,它会起作用吗?您可以在 Visualstudio 中创建可调试的小型转储,但无法使用 gcc 创建相同的转储,

谷歌制作了一个您可能会找到的软件有用,但我不确定它可以用 gcc

http://code.google.com/p/google-breakpad/

或者你可以将 drmingw 设置为 jit 调试器

drmingw -i

我确信在 mingw 上也可以得到类似回溯的东西,因为 mingw 编译的 llvm 能够转储跟踪

http://code.google.com/p/backtrace-mingw/

看起来更简单,但我还没有测试它

用 -g3 编译(如果可以 -O0 )

windows does not create core files (on linux they are dumped by the kernel iirc)
you can try to attach with gdb with the crash dialog opened but I doubt it will work

if you use msvc instead you can create a minidump debuggable in visualstudio but there is no way to create same dump with gcc

google made a software that you may find useful, but I'm not sure it can produce stuff with gcc

http://code.google.com/p/google-breakpad/

or you can set drmingw as jit debugger

drmingw -i

I'm sure it is possible to get something like a backtrace also on mingw, since mingw compiled llvm is able to dump a trace

http://code.google.com/p/backtrace-mingw/

looks like simpler but I've not tested it

compile with -g3 (and if you can -O0)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文