mingw gcc编译和gdb调试
我想gdb在mingw下的Windows上如何工作? 当用mingw C编译成.exe时,它会创建PE文件,对吧(这样Windows就可以运行它)。
但随后您想使用 gdb 调试 .exe。这个gdb知道调试PE文件吗?如何?它是否从PE文件中读取调试信息?是 Dwarf 调试信息还是其他信息?
I think how gdb works on Windows under mingw?
When compile with mingw C into .exe, it creates PE file, right (so Windows can run it).
But then you want debug the .exe with gdb. This gdb knows to debug PE file? How? Does it read debug info from PE file? Is it Dwarf debug info or something else?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如你所说,为了在 Windows 上本地运行,mingw 显然会生成 PE 可执行文件。
运行 objdump -s your.exe 来查看 mingw 生成的 PE 文件中嵌入的部分。 (
.debug_*
)。如果您在 Linux 上构建相同的可执行文件并执行相同的操作,您将看到节名称匹配。在 objdump 中添加-s
参数会显示该节的内容,并且您将看到格式看起来相同,因此 mingw 必须使用 DWARF。As you say, in order to run natively on windows mingw obviously produces PE executables.
Run
objdump -s your.exe
to see the sections embedded in the PE file mingw produces. (.debug_*
). If you build the same executable on, say, Linux and do the same thing you'll see the section names match. Adding in the-s
argument to objdump shows the section contents and you'll see the format looks the same, so mingw must be using DWARF.