【发布时间】:2015-01-22 10:54:38
【问题描述】:
我正在尝试为 Linux 目标调试在 Windows 主机上交叉编译的应用程序。
问题:
因为初始编译是在 Windows 中进行的,所以二进制文件中存储的源文件路径的格式为 C:\Users\foo\project\...。在 Linux 目标上,我将源文件放在 \home\foo\project\.... 下,默认情况下 gdb 找不到源文件,因为路径不同。
到目前为止我所尝试的:
在 gdb 中使用“目录”命令为正在调试应用程序的目标 Linux 系统中的 .c 源文件提供准确路径。这可行,但不幸的是实际上有数百个文件,因此这种解决方案是不切实际的。
使用
set substitute-path C:\\Users\\foo\\project /home/foo/project命令让 gdb 替换所有前缀。请注意,\\似乎是必要的,以便show substitute-path注册正确的字符串。不幸的是,这不起作用。我的猜测是,substitute-path 命令不处理 ms-dos 样式的路径。尝试将调试信息分离到单独的 .debug 文件中(请参阅 How to generate gcc debug symbol outside the build target?),然后使用 debugedit 通过命令
debugedit --base-dir=C:\Users\foo --dest-dir=/home/foo project.debug更改路径。不幸的是,这也不起作用。debugedit似乎可以正常工作,如果现有路径都是 UNIX/Linux 之类的,但似乎不适用于 ms-dos 样式的路径。
我查看了 stackoverflow,虽然有类似的主题,但我找不到任何对我有帮助的东西。非常感谢任何建议/帮助。我意识到从 Windows 进行交叉编译是一种非常迂回的方式,但目前无法避免。
谢谢
【问题讨论】:
标签: linux windows gdb cross-compiling