做网站时用插件需要注明吗,外贸建站深圳,网址交易网站,网站图标代码基本命令
#gdb test test是要调试的程序#xff0c;由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。 start #xff1a; 指令会执行程序至main() 主函数的起始位置#xff0c;即在main() 函数的第一行语句处停止执行#xff08;该行代码尚未执行#xff09; cont…基本命令
#gdb test test是要调试的程序由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。 start 指令会执行程序至main() 主函数的起始位置即在main() 函数的第一行语句处停止执行该行代码尚未执行 continue 从断点位置继续运行 r(un) 指令会一直执行程序直到执行结束。 如果程序中手动设置有断点则run 指令会执行程序至第一个断点处。在它后面可以跟随发给该程序的任何参数包括标准输入和标准输出说明符(和)和shell通配符*、、[、]在内。
n(ext) 单步运行,逐过程调试C 代码Style s(tep) 单步运行,逐语句调试C Style
n(ext)i 单步运行,逐过程调试汇编代码 s(tep)i 单步运行,逐语句调试汇编代码si/s 都可以
finish 如果已经进入了某函数而想退出该函数返回到它的调用函数中可使用命令finish until 结束当前循环 whatis 显示变量或函数类型 quit 退出gdb
file tools/system : 添加sourceMap文件tools/system directory /Users/Linux/Linux-0.11-on-mac: 指定源码路径/Users/Linux/Linux-0.11-on-mac source a 应用gdb命令脚本 a可以在脚本中添加一系列断点避免每次调试都需要设置这些断点。更多参考
断点
info b 查看断点information break的缩写 break n 在n行处设置断点 tbreak n/ tbreak func 设置临时断点到达n行或函数func 后被自动删除 break main.c:10 在main.c文件第10行设置断点 break 0x3400a 在内存0x3400a处设置断点 break 10 if i3 设置条件断点在循环中使用非常方便
clear 10 清除第10行的断点清除时GDB会给出提示 delete 3 对第10行 清除断点和自动显示的表达式的命令清除时GDB不会给出任何提示 disable/enable 3 让所设断点暂时 关闭/开启如果要让多个编号处的断点失效/使能可将编号之间用空格隔开 awatch/watch i 设置一个观察点当变量i 被读出或写入时程序被暂停 rwatch i 设置一个观察点当变量i 被读出时程序被暂停
查看源代码
list 简记为 l 其作用就是列出程序的源代码默认每次显示10行。 list 12将显示当前文件以“12行”为中心的前后10行代码 list main将显示“main”所在函数的源代码
查看运行信息
info program 查看程序的是否在运行进程号被暂停的原因。 p i 显示变量值i在程序暂停时键入p 变量名(print)即可GDB在显示变量值时都会在对应值之前加上$N标记它是当前变量值的引用标记以后若想再次引用此变量就可以直接写作$N而无需写冗长的变量名
display 查看变量或表达式的值例如 display /x i以16进制显示变量i的值。它与print的区别是每当程序暂停执行例如单步执行时GDB 调试器都会自动帮我们打印出来而 print 命令则不会。 参考
watch i 观察变量在某一循环处往往希望能够观察一个变量的变化情况这时就可以键入命令watch来观察变量的变化情况GDB在n设置了观察点
i register 打印寄存器的值输出不包括浮点寄存器和向量寄存器的内容 i all-registers 输出所有寄存器的内容 i registers eax”或者“p $eax 打印eax寄存器的值 参考
where/bt 当前运行的堆栈列表 bt /backtrace/info stack 显示当前调用堆栈 bt full 查看完整的调用堆栈信息包括每个栈帧中所有变量和参数的信息。 up/down 改变堆栈显示的深度 set args 指定运行时的参数 set args [arguments] 传递命令行参数 show args 查看设置好的参数
gdb查看内存数据
格式: x /nfu 例如 x /20xh 0x7fffffffe080
说明 x 是 examine 的缩写意思是检查。
n表示要显示的内存单元的个数比如20
f表示显示方式, 可取如下值
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。u表示一个地址单元的长度
b表示单字节
h表示双字节
w表示四字节
g表示八字节layout
(gdb) layout src 显示源代码窗口
(gdb) layout regs 显示寄存器窗口
(gdb) layout asm 显示汇编代码窗口
(gdb) layout split 显示源代码和汇编代码
info win 显示窗口的大小
layout next 切换到下一个布局模式
layout prev 切换到上一个布局模式
focus cmd/src/asm/regs/next/prev 切换当前窗口
refresh 刷新所有窗口
update 更新源代码窗口和当前执行点