Eclipse CDT和gdb对源文件的位置有不同的看法

时间:2012-11-26 13:33:44

标签: gdb eclipse-cdt

我做了以下事情:

  1. 将一个Makefile项目导入Eclipse CDT。
  2. 使用g ++的-ggdb选项从命令行编译程序。
  3. 从命令行运行程序
  4. 在Eclipse CDT中设置一些断点
  5. 将Eclipse CDT调试器(gdb)附加到我的程序生成的子进程(子进程从同一项目运行程序)。
  6. 此时我在控制台中收到错误消息

      

    没有名为/home/oswald/Eclipse/CDT/Workspace/Project/path/to/header.h的源文件。

    当我恢复程序时,我的所有断点都会被跳过。我怎样才能让我的断点工作?

    一些补充说明:

    • 没有涉及共享库。
    • Eclipse Indigo,gdb 7.4,Ubuntu 12.04
    • 使用命令行将gdb附加到进程,我可以将断点设置为header.h:257header.h位于文件夹/home/oswald/Eclipse/CDT/Workspace/Project/path/to/中)。 gdb然后尊重这个断点。
    • 使用命令行将gdb附加到进程,我无法将断点设置为/home/oswald/Eclipse/CDT/Workspace/Project/path/to/header.h:257,我从gdb获得与使用Eclipse CDT时相同的消息。
    • Eclipse CDT使用 GDB(DSF)附加到Process Launcher 。切换到标准附加到Process Launcher 会产生一条错误消息,表明系统无法列出正在运行的进程。
    • 调试配置中的源查找路径设置为默认值(绝对文件路径,程序实际文件路径,项目)。我尝试了各种其他设置,但都没有效果。

1 个答案:

答案 0 :(得分:1)

作为一种解决方法,我编写了一个shell脚本,该脚本生成一个包含相应目录条目的.gdbinit文件:

#!/bin/sh

PROJECT=/home/oswald/Eclipse/CDT/Workspace/Project

find $PROJECT -name "*.h*" -o -name "*.c*" \
  | sed 's:/[^/]*$::' \
  | sort \
  | uniq \
  | sed 's/^/directory /' > $PROJECT/.gdbinit

并将Eclipse CDT配置为使用该.gdbinit文件。