eclipse 调试模式下的 GDB 找不到 stdlib/rand.c
Posted
技术标签:
【中文标题】eclipse 调试模式下的 GDB 找不到 stdlib/rand.c【英文标题】:GDB on eclipse debug mode can't find stdlib/rand.c 【发布时间】:2015-01-13 20:57:44 【问题描述】:我试图让 gdb 在 ubuntu 上运行 eclipse cdt 以开始调试一些简单的程序。所以我做了我认为必要的步骤来让它运行:
1.创建可执行项目
2.编译
3.运行
4. 创建文件 .gdbinit 并将其放在主项目文件夹中
5.设置一些调试器configuration:
5.我还试图找到一个看起来像这样的.gdbinit 文件:
set schedule-multiple
dir ~/gcc_build/4.7.2/build/gcc
dir ~/gcc_build/4.7.2/gcc
dir ~/gcc_build/4.7.2/gcc/cp
dir ~/gcc_build/4.7.2/gcc/lto
source ~/gcc_build/4.7.2/build/gcc/gdbinit.in
但我没有在我的电脑中找到任何类似的东西,即使做了一个:
# find / -name .gdbinit
所以,我的文件 .gdbinit 以简单的内容结束 - 是的,只是:
set new-console on
然后我点击了应用和调试:
gdb 开始按预期正常工作。我按下“step over / F6”按钮,调试器一步一步地跳过代码。直到它到达命令 rand() 并且 gdb 挂起并显示消息:
Can't find a source file at "/build/buildd/eglibc-2.19/stdlib/rand.c"
Locate the file or edit the source lookup path to include its location.
因此我也尝试不成功地找到 rand.c 来更新此路径以包含其位置:
# find / -name rand.c
# find / -name stdlib
在 GDB 的错误消息抱怨 rand.c 丢失后,我尝试继续步进......从那时起,当我重新启动调试时,步进模式被禁用:
是否因为我的文件 .gdbinit 的某些设置丢失而出现此问题?或者 GDB 是如何无法从 c99 的 stdlib 中找到 rand.c 的?当我编译并运行程序时,它运行良好。只有当我尝试启动调试器时,GDB 才会崩溃。
更新:我在运行commands 后遇到了缺少 rand.c 的问题:
# apt-get install libc6-dbg
# apt-get source libc6
但现在出现了不同的错误:
Can't find a source file at "/build/buildd/eglibc-2.19/csu/libc-start.c"
Locate the file or edit the source lookup path to include its location.
我还应该为 gdb 安装那个库吗?
非常感谢所有建议。
【问题讨论】:
那之后你不能继续前进吗?走出或跨过 这看起来不像是崩溃,只是一个警告。当您尝试踩踏时会发生什么? 我觉得像F6 重点是没有所有库的源码是正常的。它一直在发生。 gdb 通常会在您真的想调试 stdlib 的情况下显示该消息,但无论如何您应该能够继续。最坏的情况是它会运行 asm 并向你展示反汇编代码 你查看聊天记录吗? 【参考方案1】:根据我在您的描述中看到的...查看您发布的第 4 和第 5 张图片,您执行了所有必需的步骤。
但是,在我看来,您的 GDB 与多个项目相关联。这意味着除非您真的需要,否则我强烈建议您选择当前未调试的所有项目并将它们从调试器模式中删除。所以,我的建议是,在你完成了到目前为止所做的所有步骤之后,然后继续:
Debug Configurations > C/C++ Applications: (drop down it)
...然后单击您未编译的每个项目,用鼠标右键选择“删除” - 但不要担心,它不会删除您的项目,而只会删除该项目的附件到您的调试器模式。
然后重启eclipse。当你再次尝试在调试器模式下运行时,一切都会比以前顺利得多。
【讨论】:
【参考方案2】:第一步:
去https://www.gnu.org/software/libc/下载glibc。
第二步:
在本地解压,当eclipse提示“Can't find ... xxx.c”时,只需将文件加载到eclipse中即可。它会起作用的。
【讨论】:
以上是关于eclipse 调试模式下的 GDB 找不到 stdlib/rand.c的主要内容,如果未能解决你的问题,请参考以下文章
eclipse helios 找不到 g++、gdb、$PATH、make