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

时间:2009-07-29 23:53:38

标签: linux mingw eclipse-cdt

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

  1. C / C ++ IDE与Visual Studio相当
  2. 生成Windows PE二进制文件的方法
  3. 调试Windows PE二进制文件的方法
  4. 我第一次尝试Code :: Blocks。 Here我找到了为交叉开发设置它的指南,所以我设法在Wine下编译并运行“Hello World”。此外,调试工作也是如此。

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

    现在我正在尝试在Eclipse CDT中使用MinGW Insight版本的GDB。使用Code :: Blocks指南中描述的调试器的简单方法将不再适用。我继续收到“创建会话错误”消息。

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

3 个答案:

答案 0 :(得分:3)

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

  1. QtCreator。不要被它的名字搞糊涂,QtCreator适用于任何类型的C ++代码都很好,你不需要在Qt中编写代码来使用它。它就像FOSS Visual Studio:它甚至可以“动态”检查语法。

  2. MinGW的。这里没什么可说的,它只是创建了Win PE可执行文件,而且它可以工作。它在存储库中可用。注意,Win GUI应用程序在其PE头集中有特殊位;因此,为了使用MinGW创建GUI应用程序,您必须传递一个选项-mwindows来设置此位。

  3. 这是一个问题。真的:我只是试图调试一个Windows应用程序,并没有找到办法做到这一点。我将在这里回忆一下迄今为止我尝试过的事情,只是为了让你不要踩到我的耙子:

    • <强> winedbg 即可。可能它应该工作,但对我来说它没有。当我设置断点时,例如br 43,它会显示Unable to add breakpoint (unknown address 7b860807)

    • <强> winedbg 即可。是的,再一次,但是这次我们将像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 即可。我确信我找到了一种方法:简单使用gdb的Windows版本可以解决问题;更重要的是,对我来说,因为我是Emacs的家伙,它与使用原生gdb进行调试完全一样。但是,唉,windows gdb只是没有用。如果我运行它并输入任何命令,它就什么都不做。它仅对 Ctrl-c Ctrl-z 命令作出反应。可能我会利用业余时间在邮件列表上询问有关它的问题。那么,现在我们不能使用它......

  4. 那么我们对调试做了什么?最有可能寻找另一个在 WINE 下工作的Windows调试器。如果我没记错的话,OllyDbg工作了,但我现在还不知道如何让它显示源代码。

答案 1 :(得分:0)

你可以试试NetBeans。这是一个很好的免费开源 和跨平台支持IDE。

答案 2 :(得分:-2)

在VM中运行Windows?

说真的,你的问题很好,但可能不值得花时间找出答案(尤其是:因为似乎没有人有一个现成的答案)。如果您还有实际工作要做,那么VM中的本机Windows或Windows就是答案。