List命令没有加载gdb中汇编程序的源代码

时间:2017-02-04 17:00:09

标签: linux assembly gdb

我正在使用gdb [7.11.1] kali linux 32位 当我使用list命令在gdb中加载我的汇编程序的源时,它显示以下错误消息: '没有加载符号表。使用“file”命令'

我尝试过以下命令:

列表 list line_number

在这两种情况下,错误都是相同的。

请帮帮我

谢谢!提前

2 个答案:

答案 0 :(得分:1)

  

我使用list命令来加载程序集的源代码

List命令执行 nothing 排序。相反,它列出了GDB已经加载的源。

  

as -o progname.o progname.s

在您的情况下,GDB不会加载任何源代码,因为您编译的程序没有任何调试信息。你可能想要:

as -g -o progname.o progname.s

来自man as

  -g
   --gen-debug
       Generate debugging information for each assembler source line
       using whichever debug format is preferred by the target.  This
       currently means either STABS, ECOFF or DWARF2.

答案 1 :(得分:1)

当我试图调试我的 c 代码以解决缓冲区溢出问题时,我遇到了同样的问题。 由于干净编译而没有生成任何调试信息,因此会出现该错误。 对于 c 程序,而不是像 gcc program.c 那样正常编译尝试运行 gcc -g -fno-stack-protector -z exec stack -o buffer program.c

-g 告诉 GCC 为 GDB 添加额外信息
-fno-stack-protector 标志关闭堆栈保护机制
-z execstack,它使堆栈可执行

该命令将创建一个 buffer 二进制文件,因此它将满足在 gdb 中运行 list 命令的所有条件。
使用 gdb ./buffer 启动 gdb,然后输入 list 命令。它会起作用!!