Linux 无gcc的gdb

Linux 无gcc的gdb,linux,assembly,gdb,Linux,Assembly,Gdb,是否可以使用与as组合并与ld链接的程序运行GDB?使用gcc添加标志-g允许调试,但我得到错误没有加载符号表。尝试向加载的程序添加断点时,请使用“file”命令 谢谢 编辑也许我应该清楚地表明,我正在汇编中学习和编程。我真正想要的是一个堆栈跟踪,但是能够使用GDB将是非常棒的 分辨率像-g一样运行 谢谢你的回答 这不是阻止调试的错误,而是以您尝试的方式设置断点的错误。由于GDB没有任何符号信息,您必须以其他方式设置断点。这是可能的。但是,您需要符号来添加符号断点,并且符号由调试信息提供;确保您

是否可以使用与
as
组合并与
ld
链接的程序运行GDB?使用
gcc
添加标志
-g
允许调试,但我得到错误
没有加载符号表。尝试向加载的程序添加断点时,请使用“file”命令

谢谢

编辑也许我应该清楚地表明,我正在汇编中学习和编程。我真正想要的是一个堆栈跟踪,但是能够使用GDB将是非常棒的

分辨率像-g一样运行


谢谢你的回答

这不是阻止调试的错误,而是以您尝试的方式设置断点的错误。由于GDB没有任何符号信息,您必须以其他方式设置断点。

这是可能的。但是,您需要符号来添加符号断点,并且符号由调试信息提供;确保您的汇编器和链接器提供了这些使用GNU
as
编辑
,使用
as-g
。或者只使用
gcc-g
:如果给它一个
.s
文件,它将根据需要调用汇编程序和链接器

GDB理解以下几种格式的调试信息:。(其中一些是带有调试部分的可执行格式,另一些是可以嵌入到可执行文件中的调试信息格式,如ELF。)
gcc-g
通常选择平台的默认值,
gcc-ggdb
通常选择最具表现力的格式(取决于您的版本,可能是DWARF-3)

如果在可执行文件中嵌入或链接了调试信息,
gdb
将尝试自动加载它。如果您在其他地方有它,您可能需要使用
file
告诉
gdb
在哪里可以找到它


您仍然可以在没有符号信息的情况下进行调试。例如,如果有代码,您可以发出
break*0x89abcdef
在该地址插入断点。

如果没有符号表,则无法以符号方式(按函数名、代码行等)设置断点。如果知道要停止的地址,仍然可以为特定地址设置断点

gdb>  b 0x12345678
当然,只有当您知道要在0x12345678处停止时,这才有用


文件
对您的可执行文件有何说明?

您可以尝试使用--gdwarf-2或-g选项以
的形式运行
,并确保没有使用--strip debug调用
ld
,并且您的makefile/安装过程没有剥离可执行文件

你能告诉我另一条路是什么吗?@泰勒:如果我知道的话,我会的。:)<代码>从~/Programming/ASM/Maximum_number读取符号…(未找到调试符号)…完成。
Maximum_number与
as
组合,并与
ld
链接,假设您确实要使用符号断点?检查ld的参数,这可能是添加符号表的一种方法。检查人的身份证和身份证?