C++ gdb不';找不到由clang++;

C++ gdb不';找不到由clang++;,c++,macos,gdb,clang,waf,C++,Macos,Gdb,Clang,Waf,使用clang++编译项目时,目标代码中显然不包括源文件的路径。这意味着gdb无法找到用于显示代码的源文件。对于特定的实例,我可以使用gdb的directory命令添加一个目录,但是我的项目有很多源目录,这很快就会让人恼火 当我将配置切换到使用g++时,gdb只会查找我的所有源文件 此功能在SnowLeopard上使用了clang++2.9,但在Lion上不使用clang++3.1。我有XCode 4.3.2 是否存在强制在对象文件中使用完整路径的叮当选项?我的配置可能还有其他问题吗?我发现了这

使用clang++编译项目时,目标代码中显然不包括源文件的路径。这意味着gdb无法找到用于显示代码的源文件。对于特定的实例,我可以使用gdb的
directory
命令添加一个目录,但是我的项目有很多源目录,这很快就会让人恼火

当我将配置切换到使用g++时,gdb只会查找我的所有源文件

此功能在SnowLeopard上使用了clang++2.9,但在Lion上不使用clang++3.1。我有XCode 4.3.2


是否存在强制在对象文件中使用完整路径的叮当选项?我的配置可能还有其他问题吗?

我发现了这一点:当使用分层生成文件构建项目时,问题就出现了。如果子目录是从父目录(在我的makefile:
make-w-csubdir
中)生成的,那么gdb无法打开源文件。当更改为sub dir并调用make just for this directory时,gdb会找到源代码。可以通过在生成的对象文件中搜索生成路径来验证这一点。我使用了
strings对象文件| grep$HOME

我还注意到:对于一个对象文件,这并没有发生:这个文件并没有用CC编译。此文件已使用esql编译。最后,esql调用CC

这就是为什么我尝试这种解决方法:不要直接从make调用clang。从shell脚本调用clang

$ cat ~/bin/mycc

/usr/bin/cc "$@"

$ export CC=mycc
$ make 
万岁!gdb打开源文件


顺便说一句:用
(cd sub dir;make-w)
替换
make-w-C sub dir
是另一种解决方法

我不确定,但你是否做过
-d
?@NeelBasu我的源文件分布在40个目录中,我不想使用
-d
40次。这很有趣,但我使用,其中源代码以分层方式包含,但waf本身不是分层的。已验证:装箱一个小项目。使用waf构建项目。gdb失败:
1../dir1/foo.c:没有这样的文件或目录。
。在使用以下命令重建项目:
CC=mycc./waf-1.6.1 configure build
后,问题消失了:
(gdb)list main 1 int main(){2 return 0;3}
这也是使用QT Creator的clang时出现的问题(无论如何对我来说)您建议的修复方法对我有效。