9

我在 Windows 上使用 Eclipse 使用 Cygwin 的工具链对 C++ 进行编程。我也想用它来调试,但我的问题如下:

  • 要调试的可执行文件位于工作区的子文件夹中(我猜这很标准),但不在构建可执行文件的实际项目中。
  • Eclipse 和 GDB 有不同的路径格式:Eclipse 使用 Windows 路径,而 GDB 使用 posix 路径。Eclipse 知道D:\Path\To\Exe,而 GDB 需要/cygdrive/d/Path/To/Exe.
  • 当我在“调试配置...”对话框中输入路径时,Eclipse坚持认为它可以找到要调试的可执行文件。在路径正确之前,“调试”按钮将被禁用。
  • Eclipse 似乎没有接受${workspace_loc}那个特定的输入框。

是否有一些我不知道的隐藏选项?你以前有过这个问题吗?

到目前为止我尝试过的

  • 强制 Eclipse 将我输入的路径传递给 GDB ---不起作用。
  • 摆弄源查找路径和路径映射 ---不起作用,它实际上只适用于源文件。
  • 为可执行文件所在的输出文件夹创建一个 C++ 项目,这样我就可以在项目中拥有一个指向 exe 的相对路径 ---不起作用。

我仍然可以尝试的事情

  • 使用该.gdbinit文件丢弃 Eclipse 给出的路径并使用 posix 路径加载真正的可执行文件 --- 尝试过,但不是很难。
  • 将包装器指定为 GDB 的参数 --- 污染了我的工作空间的根。
  • 提供我自己的插件来处理案例---添加另一段代码以另一种语言维护。
4

3 回答 3

13

在 Eclipse 中的 Preferences->C/C++->Debug->"Common Source Lookup Path" 中添加新的路径映射。作为编译路径你应该使用类Unix路径(例如/cygdrive/c),作为本地系统路径你应该使用类Windows路径(例如c:)。

于 2009-02-24T19:42:58.200 回答
1

Cygwin 附带一个程序cygpath,用于将路径从 windows 转换为 unix,反之亦然,例如

$ cygpath -u 'c:\Users\Andrew\Documents\svn'
/cygdrive/c/Users/Andrew/Documents/svn

做一个cygpath --help了解更多信息。

因此,您可能想为 GDB 编写一个包装器,将任何特定于 Windows 的路径转换为 ​​unix 路径,然后调用真正的 GDB。

于 2009-02-24T00:35:29.907 回答
0

升级到 Eclipse Ganymede 后问题就消失了。

于 2009-10-31T12:00:18.340 回答