📅  最后修改于: 2023-12-03 15:32:41.152000             🧑  作者: Mango
在 Linux 中使用 gdb 命令可以帮助程序员调试程序,找出程序的错误和调用堆栈等问题。下面是一些 gdb 命令及其示例。
要启动 gdb,可以在终端中输入以下命令:
gdb <executable>
其中 <executable>
是要调试的可执行文件的名称。
以下是一些基本的 gdb 调试命令:
run
:启动程序。break <location>
:在指定位置设置断点,例如函数名或行号。continue
:从当前位置继续执行程序,直到下一个断点。step
:逐语句单步执行程序。next
:逐语句单步执行程序,但遇到函数调用时不进入函数内部。backtrace
:打印当前调用堆栈。print <expression>
:打印表达式的值。info variables
:打印当前作用域内的所有变量。quit
:退出 gdb。下面是一些示例:
(gdb) run
(gdb) break main
(gdb) continue
(gdb) next
(gdb) backtrace
(gdb) print x
(gdb) info variables
(gdb) quit
以下是一些进阶的 gdb 调试命令:
watch <expression>
:控制表达式的值,当表达式的值发生变化时,程序停止运行,可以查看变量当前的值。set <variable> = <value>
:修改变量的值。下面是一些示例:
(gdb) watch x
(gdb) set x = 10
当程序崩溃时,可以使用 gdb 进行调试。可以在终端中输入以下命令:
gdb <executable> core.<pid>
其中 <pid>
是程序崩溃时生成的 core 文件,用于保存程序崩溃时的状态信息。
在使用 gdb 调试崩溃程序时,可以使用以下命令:
where
:打印程序崩溃时的调用堆栈信息。info registers
:打印当前寄存器的值。x/<n>x <address>
:打印给定地址的 n 个字节的十六进制值。x/<n>i <address>
:打印给定地址的 n 个指令的汇编代码。下面是一些示例:
(gdb) where
(gdb) info registers
(gdb) x/16x $esp
(gdb) x/2i <instruction pointer>
gdb 是 Linux 系统中一个非常强大的调试工具,它可以帮助程序员迅速定位程序的问题。本文介绍了一些常用的 gdb 命令及其示例,供程序员参考。