我正在使用gdb [7.11.1] kali linux 32位 当我使用list命令在gdb中加载我的汇编程序的源时,它显示以下错误消息: '没有加载符号表。使用“file”命令'
我尝试过以下命令:
列表 list line_number
在这两种情况下,错误都是相同的。
请帮帮我
谢谢!提前
答案 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
命令。它会起作用!!