目录
GCC GDB命令列表
GCC命令列表
假设源程序文件名为test.c
选项 | 功能 | 作用 |
---|---|---|
-o | 指定生成的输出文件 | gcc test.c -o test 将 test.c 预处理、汇编、编译并链接形成可执行文件 test 。-o 选项用来指定输出文件的文件名。 |
-E | 仅执行编译预处理 | gcc -E test.c -o test.i 将 test.c 预处理输出 test.i 文件。 |
-S | 将C代码转换为汇编代码 | gcc -S test.i 将预处理输出文件 test.i 汇编成 test.s 文件。 |
-c | 仅执行编译操作,不进行连接操作 | gcc -c test.s 将汇编输出文件 test.s 编译输出 test.o 文件。 |
-l | 用来指定程序要链接的库,-l参数紧接着就是库名 | gcc test.c -static -L. -ltest -o test |
-L | 库的搜索路径 | gcc test.c -static -L. -ltest -o test |
-I | 寻找头文件的目录 | |
-v | 打印编译详细信息 | gcc test.c -o test -v |
GDB命令列表
1. 运行:
命令 | 作用 |
---|---|
l | 相当于list,从第一行开始列出原码 |
r | 运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令 |
c | 继续执行,到下一个断点处(或运行结束) |
n | 单步跟踪程序,当遇到函数调用时,也不进入此函数体 |
s | 单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的 |
until | 当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体 |
until+行号 | 运行至某行,不仅仅用来跳出循环 |
finish | 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息 |
call 函数(参数) | 调用程序中可见的函数,并传递“参数”,如:call gdb_test(55) |
q | 退出gdb |
2. 设置断点:
命令 | 作用 |
---|---|
b n | 在第n行处设置断点 |
break ... if cond | 设置条件断点,...可以是上述的参数,condition表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100,表示当i为100时停住程序。 |
delete n | 删除第n个断点 |
disable n | 暂停第n个断点 |
enable n | 开启第n个断点 |
clear n | 清除第n行的断点 |
info b | 显示当前程序的断点设置情况 |
delete breakpoints | 清除所有断点 |
3. 设置观察点
命令 | 作用 |
---|---|
watch expr | 为表达式(变量)expr设置一个观察点。一量表达式值有变化时,马上停住程序 |
rwatch expr | 当表达式(变量)expr被读时,停住程序 |
awatch expr | 当表达式(变量)的值被读或被写时,停住程序 |
info watchpoints | 查看观察点、断点和捕捉点信息,同info break 一样. |
4. 查看源代码
命令 | 作用 |
---|---|
list | 简记为 l ,其作用就是列出程序的源代码,默认每次显示10行 |
list 行号 | 将显示当前文件以“行号”为中心的前后10行代码,如:list 12 |
list 函数名 | 将显示“函数名”所在函数的源代码,如:list main |
list | 不带参数,将接着上一次 list 命令的,输出下边的内容 |
5. 打印表达式
命令 | 作用 |
---|---|
print 表达式 | 简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用 |
print a | 将显示整数 a 的值 |
print name | 将显示字符串 name 的值 |
print gdb_test(22) | 将以整数22作为参数调用 gdb_test() 函数 |
print gdb_test(a) | 将以变量 a 作为参数调用 gdb_test() 函数 |
display 表达式 | 在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如: display a; |
whatis | 查询变量或函数 |
info function | 查询函数 |
扩展info locals | 显示当前堆栈页的所有变量 |
6. 查询运行信息
命令 | 作用 |
---|---|
where/bt | 当前运行的堆栈列表 |
bt backtrace | 显示当前调用堆栈 |
up/down | 改变堆栈显示的深度 |
set args 参数 | 指定运行时的参数 |
show args | 查看设置好的参数 |
info program | 查看程序的是否在运行,进程号,被暂停的原因 |
7. 分割窗口
命令 | 作用 |
---|---|
layout | 用于分割窗口,可以一边查看代码,一边测试 |
layout src | 显示源代码窗口 |
layout asm | 显示反汇编窗口 |
layout regs | 显示源代码/反汇编和CPU寄存器窗口 |
layout split | 显示源代码和反汇编窗口 |
Ctrl + L | 刷新窗口 |