如何让 Eclipse 为 Cygwin 的 GDB 提供可执行文件的 posix 路径?
我正在 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 的参数 --- 污染我的工作空间的根目录。
- 提供我自己的插件来处理这种情况 --- 添加另一段代码以另一种语言进行维护。
I'm using Eclipse on Windows to program C++ using Cygwin's toolchain. I would like to use it for debugging as well, but my problem is the following:
- The executable to debug is in a sub-folder of the workspace (pretty standard, I guess) but not of the actual Project from which the executable is built.
- Eclipse and GDB have different path formats: Eclipse works with Windows paths, whereas GDB works with posix paths. Eclipse knows
D:\Path\To\Exe
whereas GDB needs/cygdrive/d/Path/To/Exe
. - Eclipse insists that it can find the executable to debug when I enter the path in the "Debug configurations..." dialog. The "Debug" button is disabled until the path is correct.
- Eclipse does not seem to take
${workspace_loc}
in that particular input box.
Is there some hidden option I don't know about? Have you had the problem before?
What I've tried so far
- Forcing Eclipse to pass the path I input to GDB --- did not work.
- Fiddling with source lookup paths and path mappings --- did not work, it's really just for source files.
- Creating a C++ Project for the output folder where the executable is, so I could have a relative path to the exe inside the project --- did not work.
Things I could still try
- Use the
.gdbinit
file to discard the path given by Eclipse and load the real executable with posix paths --- tried that, but not very hard. - Specify a wrapper as argument to GDB --- pollutes the root of my workspace.
- Provide my own plug-in to deal with the case --- adds another piece of code to maintain in another language.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Eclipse 中的首选项->C/C++->调试->“公共源查找路径”添加新的路径映射。 作为编译路径,您应该使用类似 Unix 的路径(例如 /cygdrive/c),作为本地系统路径,您应该使用类似 Windows 的路径(例如 c:)。
In Eclipse in Preferences->C/C++->Debug->"Common Source Lookup Path" add new path mapping. As compilation path you should use Unix like path (e.g. /cygdrive/c), as local system path you should use Windows like path (e.g. c:).
Cygwin 附带了一个名为 cygpath 的程序,用于将路径从 Windows 转换为 Unix,反之亦然,例如
执行
cygpath --help
获取更多信息。因此,您可能想要为 GDB 编写一个包装器,将任何特定于 Windows 的路径转换为 Unix 路径,然后调用真正的 GDB。
Cygwin comes with a program called
cygpath
to translate paths from windows to unix and vice-versa, e.g.do a
cygpath --help
for more info.So you probably want to write a wrapper for GDB that translates any windows-specific paths to unix paths, and then invokes the real GDB.
升级到 Eclipse Ganymede 后问题就消失了。
The problem went away when upgrading to Eclipse Ganymede.