文章目录
前言
一、gdb的常用命令
Linux包含了一个叫gdb的调试程序。gdb可以用来调试C和C++程序。在程序编译时用 -g 选项可打开调试选项。
常见调试步骤如下:
gcc -o filename.o -Wall filename.c -g //进入调试用gcc -o fn.o fn.c -g
gdbfilename.o //进入调试
l //显示代码(list)
b 4 //在第4行设置断点
r //运行
n //下一步不进入函数
s //单步进入函数
pI //打印变量I
c //运行到最后
q //退出
gdb的常用命令:
命令格式 | 含义 |
---|---|
set args 运行时的参数 | 指定运行时的参数,如set args 2 |
show args | 查看设置好的运行参数 |
path dir | 设定程序的运行路径 |
show paths | 查看程序的运行路径 |
set environment var [=vahue] | 设置环境变量 |
show environment [var] | 查看环境变量 |
cd dir | 进入到dir目录,相当于shell中的cd命令 |
p | wd | 显示当前工作目录 |
shell command | 运行shell的command命令 |
info b | 查看所设断点 |
break [文件名:] 行号或函数名<条件表达式> | 设置断点 |
tbreak [文件名:] 行号或函数名<条件表达式> | 设置临时断点,到达后被自动删除 |
delete [断点号] | 删除指定断点,其断点号为"info b"中的第一栏。若默认断点号则删除所有断点 |
disable [断点号] | 停止指定断点,使用"info b"仍能查看此断点。若默认断点号则停止所有断点 |
enable [断点号] | 激活指定断点,即激活被disable停止的断点 |
condition [断点号] <条件表达式> | 修改对应断点的条件 |
ignore [断点号] <num> | 在程序执行中,忽略对应断点num次 |
Step | 单步恢复程序运行,且进入函数调用 |
Next | 单步恢复程序运行,但不进入函数调用 |
Finish | 运行程序,直到当前函数完成返回 |
c | 继续执行函数,直到函数结束或遇到新的断点 |
list <行号> | <函数名> | 查看指定位置代码 |
file [文件名] | 加载指定文件 |
forward -search 正则表达式 | 源代码前向搜索 |
reverse -search 正则表达式 | 源代码后向搜索 |
dir dir | 停止路径名 |
show directories | 显示定义了的源文件搜索路径 |
info line | 显示加载到gdb内存中的代码 |
print 表达式 | 变量 | 查看程序运行时对应表达式和变量的值 |
x <n/f/u> | 查看内存变量内容。n为整数,表示显示内存的长度;f表示显示的格式;u表示从当前地址往后请求显示的字节数 |
display 表达式 | 设定在单步运行或其他情况中,自动显示的对应表达式的内容 |
backtrace | 查看当前栈的情况,即可以查到调用哪些函数尚未返回 |
按Tab键补齐命令,用光标键上下翻动历史命令,用help up看帮助。