如何让Eclipse为Cygwin的GDB提供可执行文件的posix路径?

时间:2009-02-12 12:49:58

标签: eclipse gdb cygwin

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

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

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

到目前为止我尝试了什么

  • 强制Eclipse通过我输入GDB的路径--- 无效。
  • 摆弄源查找路径和路径映射--- 无法正常工作,它实际上只适用于源文件。
  • 为可执行文件所在的输出文件夹创建一个C ++项目,所以我可以在项目中有一个相对的exe路径--- 不起作用。

我仍然可以尝试的事情

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

3 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:1)

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

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

执行cygpath --help了解详情。

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

答案 2 :(得分:0)

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