[工具]GDB的命令和使用
Posted wingaso
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[工具]GDB的命令和使用相关的知识,希望对你有一定的参考价值。
目录
简介
一、GDB命令
1.1 断点
1.2 执行
1.3 信息查看
1.4 其他
二、GDB启动
2.1 用gcc编译程序
2.2 使用GDB调试
简介
GDB是一个跨操作系统的调试器,是Linux系统分析漏洞、调试溢出程序常用的调试工具。
一、GDB命令
1.1 断点
GDB命令 | 参数 | 作用 | 示例 |
---|---|---|---|
break(简写为b) | 地址(类型包括:函数名、源文件行号,*内存地址) | 下断点 | break main break 10 break *0x08000000 |
watch | 表达式 | 当表达式的值被改变,程序将停止执行 | watch *((int*)0x80d1ba0) |
clear | 地址 | 和break相反,清除指定地址上的断点 | clear main clear 10 clear *0x08000000 |
info | break | 显示断点信息(断点的编号、种类、使能状态、地址以及位置) | info break |
disable | 断点编号 | 禁用指定断点 | disable 1 |
enable | 断点编号 | 启用一个被禁用的断点 | enable |
delete(简写为d) | 断点编号 | 删除指定断点 | delete 1 |
1.2 执行
`GDB命令 | 参数 | 作用 | 示例 |
---|---|---|---|
run(简写为r) | 命令行参数 | 运行程序 | run XFOCUS |
attach | 进程号 | 调试正在运行的程序 | attach 1022 |
continue(简写为c) | 次数(可选) | 继续执行,参数表示忽略几次断点 | c c 4 |
next(简写为n) | 次数(可选) | 单步(不进入函数调用),参数表示执行几次next | n n 4 |
nexti(简写为ni) | 次数(可选) | 单步(不仅如此函数调用) | ni ni 4 |
step(简写为s) | 次数(可选) | 单步(跟入函数调用) | s s 4 |
stepi(简写si) | 次数(可选) | 单步(跟入函数调用) | si si 4 |
until(简写为u) | 源文件行号 | 执行到指定地址后中断 | u 18 |
finish | 无 | 运行当前函数知道函数退出 | finish |
return | 无 | 立即退出当前函数 | return |
gdb /path/program 1022
1.3 信息查看
`GDB命令 | 参数 | 作用 | 示例 |
---|---|---|---|
info(简写为i) | reg break files args frame functions | 显示各种信息 | info reg info break |
backtrace(简写为bt) | 帧的数目 | 显示当前函数调用栈信息 | bt |
print(简写为p) | /f exp (f为修饰,exp为表达式) | 显示表达式的值,格式有 x 十六进制 c 字符 | p/c 0x41 p/x 1024 p str p/x $eax |
x | /nfu addr (n为个数,f为格式,u为单元大小)如果没有指定地址则接着上一次x命令显示之后的地址 | 显示指定地址内容。 格式有: x 十六进制 s 字符串 i 指令 等 单元大小有: b h w g(b为一个字节,其他依次比前一个大一倍) | x/4i $pc x/16xb $sp x/s * (argv + 1) x/s 0xbffffc52 |
list(简写为l) | 行号、函数或地址 | 如果调试的是带符号的编译的程序,那么list命令可以列出程序源码 | l file.c:19 |
disass | 函数名 | 翻汇编指定函数,如果没有指定参数默认为当前参数 | disass main |
1.4 其他常用命令
`GDB命令 | 参数 | 作用 | 示例 |
---|---|---|---|
回车 | 无 | 重复执行上一条命令 | |
set | 参数很多,建议输入help set查看 | 设置值 | set var i=4 set int0xbffffc52=50 set int($esp+4)=$eip |
shell | 外部shell命令 | 执行外部shell命令 | shell ps -ef |
quit(简写为q) | 无 | 退出gdb | quit |
二、GDB启动
2.1 用gcc编译程序
gcc -g a.c -o a
注:添加参数-g,会保留代码的文字信息。
2.2 使用GDB调试
gdb a
如果要减少不必要的提示信息,可以加-q参数,即
gcc -q a
参考资料
linux下gdb调试方法与技巧整理
gcc编译为什么要加-g选项
RUNOOB gdb参数详解
《网络渗透技术》许治坤著
原创不易,感谢支持。
以上是关于[工具]GDB的命令和使用的主要内容,如果未能解决你的问题,请参考以下文章