Linux GDB调试入门:关键命令详解

需积分: 6 3 下载量 44 浏览量 更新于2024-09-16 收藏 83KB DOC 举报
"LINUX GDB调试" 在Linux操作系统中,GDB(GNU Debugger)是用于调试C、C++等编程语言的程序的重要工具。它是一个命令行界面的应用,提供了丰富的功能,帮助开发者诊断和修复程序中的错误。通过GDB,程序员可以在程序运行时查看变量的值、设置断点、单步执行代码以及分析内存状态等。 首先,启动GDB需要加载待调试的可执行文件,使用`file`命令指定文件名,如`(gdb) file gdb-sample`。通常,我们会在与程序相同的目录下启动GDB,因此只需提供文件名,无需包含完整路径。 `r`是`run`的缩写,用于启动程序。如果程序中没有设置断点,那么它会从头到尾执行;若有断点,程序将在第一个断点处暂停。 `c`代表`continue`,当程序在断点处暂停后,使用`c`命令可以继续执行程序,直到遇到下一个断点或程序自然结束。 `b`是`breakpoint`的简称,用于设置断点。可以指定行号、函数名或代码地址来设定断点,如`(gdb) b 8`、`(gdb) b main`或`(gdb) b *0x804835c`。对于函数名称前加`*`,意味着在函数的入口(即prolog代码处)设置断点,这对于理解函数的执行流程很有帮助。使用`d`或`d[编号]`可以删除断点,编号从1开始。 `s`和`n`是单步执行命令。`s`(step)进入函数内部,如果当前行有函数调用,会逐行执行直至进入函数。`n`(next)则执行一行代码,但不会进入函数调用。这两个命令在有源代码调试信息(GCC编译时添加`-g`选项)的情况下更为有效。 `si`和`ni`类似`s`和`n`,但它们是针对汇编指令进行单步执行,而不是源代码。这在需要深入理解底层指令执行时非常有用。 `p`是`print`的简写,用于打印变量的值,例如`(gdb) p myVariable`,这可以帮助开发者检查程序运行时的状态。 此外,GDB还有许多其他命令,如`info`用于查看信息(如变量、堆栈、断点等)、`bt`(backtrace)用于显示调用堆栈、`disassemble`用于查看代码的汇编形式等。熟练掌握这些基本命令,能够极大地提高调试效率,帮助开发者定位和解决程序中的问题。在实际工作中,不断实践和探索GDB的各种功能,可以让你成为更高效的Linux程序调试专家。