gdb 找不到由 clang++ 编译的源文件
gdb doesn't find source files compiled by clang++
使用clang++编译项目时,目标代码中显然不包括源文件的路径。这意味着gdb无法找到用于显示代码的源文件。对于特定的实例,我可以使用gdb的directory
命令来添加目录,但我的项目有很多源目录,这很快就会变得很烦人。
当我将配置切换为使用g++时,gdb只需找到我的所有源文件。
该功能在Snow Leopard上运行了clang++2.9,但在Lion上不运行clang++3.1。我有XCode 4.3.2。
是否有强制在对象文件中使用完整路径的clang选项?我的配置可能有其他问题吗?
我发现了这一点:当使用分层makefile构建项目时,就会出现问题。如果子目录是从父目录(在我的makefile:make -w -C sub-dir
中)构建的,那么gdb无法打开源文件。当更改到子目录并仅为此目录调用make时,gdb会找到源。您可以通过在生成的对象文件中搜索生成路径来验证这一点。我使用了strings object-file | grep $HOME
。
我还注意到:一个对象文件没有发生这种情况:这个文件没有用CC编译。这个文件是用esql编译的。最后,esql调用CC.
这就是我尝试这种变通方法的原因:不要直接从make调用clang。从shell脚本调用clang。
$ cat ~/bin/mycc
/usr/bin/cc "$@"
$ export CC=mycc
$ make
万岁!gdb打开源文件!
BTW:用(cd sub-dir;make -w)
替换make -w -C sub-dir
是另一种解决方法。
相关文章:
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- make 命令如何避免重新编译未更改的源文件?
- 在 Visual Studio 中的 1 个项目中编译单个 C++ 源文件
- 如何在Visual Studio 2019中有条件地编译c++源文件
- 从源文件编译 QOpenGLshader 时出错
- C++ SD 总线源文件编译问题
- C :使用标题和源文件,源文件不编译
- 源文件未使用最新版本的Dev C 和OpenCV 3.x版本编译
- C++ 编译时检查微控制器引脚是否已从其他源文件初始化
- 如果我的源文件中使用常数,则如何使编译很好地停止
- 如何指示emscripten在编译过程中应在哪里找到源文件
- 在RCPP中编译多个源文件
- 开发DEV C 源文件未编译
- 编译目录中的所有源文件,并将 objs 存储在不同的目录中
- Makefile 将在文件更改时链接文件,但不会重新编译更改的源文件
- 如何让 CMake 编译包含 Boost Local Functions 的源文件
- 编译几个源文件(主文件和头文件)并在ROOT CINT中链接它们
- QtCreator - 编译问题 - 外部源文件
- 如何更改从多个源文件编译的g++生成的Linux共享库的入口点
- 用g++将多个源文件编译成一个.o