[工具]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
infobreak显示断点信息(断点的编号、种类、使能状态、地址以及位置)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)次数(可选)单步(不进入函数调用),参数表示执行几次nextn
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)退出gdbquit

二、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的命令和使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux之gdb调试工具

Linux基础常用开发工具——gdb调试器

gdb调试工具常用命令 && kdb

gdb调试命令

linux禁止gdb调试

Linux开发工具vim以及git的使用详解