2009-07-29 63 views
9

我从Windows迁移到Ubuntu Linux,现在我想在此设置开发环境。问题是,我需要在Eclipse中的Linux上交叉调试Windows应用程序框CDT

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

在我第一次尝试代码:: Blocks的。 Here我找到了设置交叉开发的指南,所以我设法在Wine下编译并运行了“Hello World”。而且,调试也起作用。

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

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

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

回答

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。我确信我找到了一种方法:简单地使用windows版本gdb应该可以解决问题;对我来说,更重要的是,因为我是一个Emacs家伙,所以与使用本机gdb进行调试完全相同。但是,唉,Windows gdb只是没有工作。如果我运行它并输入任何命令,它什么也不做。它仅对Ctrl-cCtrl-z命令作出反应。也许我会利用业余时间在邮件列表上提出一个问题。好了,现在我们不能使用它...

因此,我们已经做调试?最有可能寻找另一个Windows调试器,在WINE下工作。如果我正确地记得,OllyDbg的工作,但我现在不知道如何让它显示一个源代码。

+0

QtCreator的+1。它与GCC工具链协同工作。 – yasouser 2014-08-15 07:03:01

+0

我不会更新帖子,而是将信息留在评论中:我发现如何使用wine运行`gdb.exe`以使其正常工作,它应该看起来像`wineconsole --backend = curses gdb.exe` 。 – 2014-08-18 01:54:05

0

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

-2

在VM中运行Windows?

说真的,你的问题是好的,但它可能不值得花时间来找出答案(特别是:因为没有人似乎有一个现成的答案)。如果你有真正的工作要做,VM中的本地Windows或Windows就是答案。

相关问题