这是一个问题,但基本上我想知道我是否可以在Linux交叉编译器上编译为i686-pc-mingw的应用程序上使用GDB。我想在目标窗口框中使用源代码引用等调试生成的程序。
是否可能,如果可以,我需要考虑什么(即相同版本的mingw文件,相同的binutils,相同的源代码相对路径等等)?
有一件事让我感到震惊的是,GCC和GDB的版本号似乎不匹配。你怎么知道版本是否兼容?
如果这些问题听起来很愚蠢,那只是因为我没有多少使用GDB,这只是我想要开始做的事情,所以我不是想猜测是什么破坏了。
答案 0 :(得分:6)
是的,您应该能够在Linux主机上使用GDB来调试在i686-pc-mingw
上运行的可执行文件。
术语:i686-pc-mingw
系统是您的目标,Linux
系统是您的主机。
linux
编译器的目标
i686-pc-mingw
。gdbserver
(使用交叉编译器)。 gdb
(使用本机,不是交叉编译器)。需要为gdb
和--host=x86-linux
配置--target=i686-pc-mingw
。这实际上是跨gdb - 它在Linux上运行,但调试mingw可执行文件。现在运行gdbserver :0 foo.exe
(在目标上)。这应该打印gdbserver
正在侦听连接的端口号。
运行gdb foo.exe
(在主机上),并使用target remote <windows-target-host-name>:<gdbserver-port-number>
连接到远程目标,您应该开始营业。
P.S。
GCC和GDB是完全独立的项目,它们的版本彼此没有任何关系。您应该能够使用任何相对较新的GCC版本构建GDB。