GDB(GNU调试器)是一款常用的调试工具,用于调试C、C++等编程语言的程序。以下是一些常用的GDB命令:
- 启动程序:
- `gdb <executable>`:启动GDB调试器,并加载可执行文件。
- 设置断点:
-
`break <line>`:在指定行设置断点。
-
`break <function>`:在指定函数的入口处设置断点。
-
`break <file>:<line>`:在指定文件的指定行设置断点。
-
`break <address>`:在指定内存地址设置断点。
-
`tbreak <line>`:临时断点,程序执行到该行时暂停一次,然后自动删除断点。
-
`rbreak <regexp>`:使用正则表达式设置断点。
- 运行程序:
-
`run`:运行程序。
-
`continue`:继续执行程序,直到下一个断点或程序结束。
-
`next`:逐过程执行,不进入函数内部。
-
`step`:逐语句执行,进入函数内部。
- 查看和修改变量:
-
`print <variable>`:打印变量的值。
-
`display <variable>`:每次停下来时都打印变量的值。
-
`set variable <variable>=<value>`:修改变量的值。
- 查看堆栈和调用链:
-
`backtrace` 或 `bt`:显示函数调用的堆栈信息。
-
`frame <number>`:切换到指定的堆栈帧。
-
`up`:切换到上一层调用的堆栈帧。
-
`down`:切换到下一层调用的堆栈帧。
- 单步调试:
-
`next`:执行下一条语句,不进入函数内部。
-
`step`:执行下一条语句,进入函数内部。
-
`finish`:执行完当前函数,并返回到调用该函数的地方。
- 查看源代码:
-
`list` 或 `l`:显示当前位置附近的源代码。
-
`list <function>`:显示指定函数的源代码。
- 其他常用命令:
-
`info breakpoints`:显示所有断点的信息。
-
`delete <breakpoint>`:删除指定断点。
-
`watch <expression>`:设置监视点,当表达式的值发生变化时暂停程序。
-
`quit`:退出GDB调试器。
这只是一些常用的GDB命令,GDB还有其他很多强大的功能和命令,可以根据具体的调试需求进行学习和使用。