GDB没有这样的文件或目录

我正在关注OpenSecurityTraining的这些经验教训。

我已经到了实验室,在那里我要用CMU炸弹训练自己。 他们提供了一个x86_64编译的CMU炸弹,你可以在这里find: CMU炸弹x86-64最初来自CMU实验室计算机系统:程序员的视angular(CS:APP)第一版 32位炸弹。

我有一个虚拟化的64位基本操作系统发行版,我可以毫不费力的使用GDB反汇编CMU Bomb。 现在,我有一个64位的Ubuntu 14.04 LTS(未虚拟化),当我试图重现为什么我做了我的基本操作系统,我得到了着名的错误。

我运行这些命令:

gdb ./bomb-x64 (gdb) b main Breakpoint 1 at 0x400dbd: file bomb.c, line 37. -- why bomb.c ? (gdb) r ... bomb.c: no such file or directory 

编辑:我可以在CMU炸弹的其他function上创build断点,并按预期工作。
例如:

 (gdb) b phase_1 Breakpoint 3 at 0x400f00 (gdb) r Breakpoint 1, 0x0000000000400f00 in phase_1 () (gdb) disas Dump of assembler code for function phase_1: => 0x0000000000400f00 <+0>: sub $0x8,%rsp 0x0000000000400f04 <+4>: mov $0x4023b0,%esi 0x0000000000400f09 <+9>: callq 0x401308 <strings_not_equal> 0x0000000000400f0e <+14>: test %eax,%eax 0x0000000000400f10 <+16>: je 0x400f17 <phase_1+23> 0x0000000000400f12 <+18>: callq 0x40140a <explode_bomb> 0x0000000000400f17 <+23>: add $0x8,%rsp 0x0000000000400f1b <+27>: retq End of assembler dump. 

我听说过ia32-libs,但是由于我在64位Ubuntu上运行一个64位编译的CMU炸弹,所以我没有做任何事情,我错了吗?

Solutions Collecting From Web of "GDB没有这样的文件或目录"

该可执行文件包含调试符号,这些符号表示对应于汇编代码的每一位的文件(以及文件中的特定行)。 这就是允许你在调试器中遍历C代码的方法。 调试符号放在那里由编译器(例如通过使用gcc的-g参数)。

如果您没有用于编译可执行文件的C文件,则调试器将无法向您显示C,并且您将仅限于查看汇编。

使用dir命令设置源路径

 dir /usr/src/debug 

在上面的路径。 你的代码应该出现。