可以在目标平台上的交叉编译的win32应用程序上使用GDB

时间:2010-09-15 18:08:08

标签: debugging gdb cross-compiling

这是一个问题,但基本上我想知道我是否可以在Linux交叉编译器上编译为i686-pc-mingw的应用程序上使用GDB。我想在目标窗口框中使用源代码引用等调试生成的程序。

是否可能,如果可以,我需要考虑什么(即相同版本的mingw文件,相同的binutils,相同的源代码相对路径等等)?

有一件事让我感到震惊的是,GCC和GDB的版本号似乎不匹配。你怎么知道版本是否兼容?

如果这些问题听起来很愚蠢,那只是因为我没有多少使用GDB,这只是我想要开始做的事情,所以我不是想猜测是什么破坏了。

1 个答案:

答案 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。