在Eclipse CDT中的Linux机器上交叉调试Windows应用程序

Ser*_*nov 9 linux mingw eclipse-cdt

我从Windows迁移到Ubuntu Linux,现在我想在这里设置开发环境.问题是我需要

  1. C/C++ IDE可与Visual Studio相媲美
  2. 生成Windows PE二进制文件的方法
  3. 方法做调试Windows PE二进制文件

我第一次尝试Code :: Blocks.在这里,我找到了为交叉开发设置它的指南,所以我设法在Wine下编译并运行"Hello World".此外,调试工作也是如此.

但后来我发现Eclipse + CDT插件是更先进的IDE.我花了一些时间,最后得到项目编译和链接.

现在我正在努力让Eclipse CD中的MinGW Insight版本的GDB工作.使用Code :: Blocks指南中描述的调试器的简单方法将不再适用.我继续收到"创建会话错误"消息.

所以我的问题是,如何在Eclipse下使用Wine下的MinGW GDB作为调试器后端?或者,什么是Linux-> Windows交叉开发的最佳IDE?

Hi-*_*gel 3

我想知道还没有人回答这个问题。

  1. QtCreator。不要被它的名字所迷惑,QtCreator 可以很好地与任何类型的 C++ 代码配合使用,您无需在 Qt 中编写代码即可使用它。它就像 FOSS Visual Studio:它甚至具有“动态”语法检查。

  2. 明威。这里就不多说了,只是创建Win PE可执行文件,就可以了。它可以在存储库中找到。请注意,Win GUI 应用程序在其 PE 标头集中具有特殊位;因此,为了使用 MinGW 创建 GUI 应用程序,您必须传递一个选项-mwindows来设置该位。

  3. 这是个问题。真的:我只是想调试一个 Windows 应用程序,但还没有找到方法。我将在这里简短地回忆一下到目前为止我所做的尝试,只是为了让您不要踩到我的耙子:

    • 温德布格。也许它应该有效,但对我来说却没有。当我设置断点时,即像这样br 43,它说Unable to add breakpoint (unknown address 7b860807)

    • 温德布格。是的,再次,但是这次我们将像这样使用它winedbg --gbd来使其将命令代理到gdb. 这可能是调试应用程序的唯一方法,但它有一个缺点:首先,为了重新启动应用程序,您必须退出调试器;如果您输入run它,则表示远程目标不支持此功能。其次,我什至不知道如何调试多线程应用程序;当我第一次开始这个时,我偶然发现了一个错误Non-stop mode requested, but remote does not support non-stop,在设置断点并启动后,它显示: Cannot insert breakpoint 1.Cannot access memory at address 0x401654。因此,为了完成这项工作,我需要重命名我的.gdbinit文件(即在那里设置不间断模式)

    • gdb.exe。我确信我找到了一种方法:简单地使用 Windows 版本的gdb应该可以解决问题;更重要的是,对于我来说,因为我是 Emacs 人员,所以这与使用本机 gdb 进行调试绝对是一样的。但可惜的是,Windows gdb 无法工作。如果我运行它并输入任何命令,它什么也不做。它仅对Ctrl-c命令做出反应Ctrl-z。也许我会尝试利用业余时间在邮件列表上询问有关它的问题。好吧,现在我们不能使用它......

那么我们与调试有什么关系呢?大多数人可能会寻找另一个在WINE下工作的 Windows 调试器。如果我没记错的话,OllyDbg 可以工作,但我现在不知道如何让它显示源代码。