[关闭]
@SovietPower 2021-10-10T09:26:50.000000Z 字数 5542 阅读 1182

GDB命令 笔记

学习笔记



基本操作

查看信息

Examine memory: x/FMT ADDRESS.
ADDRESS is an expression for the memory address to examine.
FMT is a repeat count followed by a format letter and a size letter.
Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal), t(binary), f(float), a(address), i(instruction), c(char), s(string) and z(hex, zero padded on the left).
Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).
The specified number of objects of the specified size are printed
according to the format.

其它示例:
print $rax:以十进制输出%rax中的内容
print /t $rax:以二进制输出%rax中的内容
print /x $rax:以十六进制输出%rax中的内容
print 0x100:输出0x100的十进制表示
print /x 555:输出555的十六进制表示
print /x ($rsp+8):以十六进制输出%rsp的内容加上8
print *(long*)0x123456:输出位于地址0x123456的长整数
print *(long*)($rsp+8):输出位于地址%rsp+8的长整数
print (char*)0x123456:输出位于地址0x123456的字符串(x/s

执行语句

next:继续执行语句,但是跳过子程序的调用。后可接数字表示跳过几条程序(不加则默认为一行)
nexti:单步执行语句,但和next不同的是,它会跟踪到子程序的内部,但不打印出子程序内部的语句。后可接数字。
step:与next类似,但是它会跟踪到子程序的内部,而且会显示子程序内部的执行情况。后可接数字。即Single stepping until exit fromt this function
stepi:与step类似,但是比step更详细,是nexti和step的结合,每次跳过一行汇编。后可接数字。

断点

其它操作

多线程调试

多进程调试

一般情况下,父进程fork出子进程后,GDB会继续调试父进程而不会管子进程。要跟踪子进程需手动输入命令。
main函数的断点将被子进程继承。

在子进程运行后,使用attach <pid>也可调试子进程(但要sleep子进程一会以便于开始调试)。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注