摘自:https://github.com/hellogcc/100-gdb-tips
摘自:https://photo.codefine.site:12524/wp-content/uploads/2015/11/100-gdb-tips.pdf
《100个gdb小技巧》
一个关于gdb使用小技巧的文档。100,在这里可能只是表明很多;具体的数目取决于您的参与和贡献。
信息显示
函数
断点
观察点
Catchpoint
- 让catchpoint只触发一次
- 为fork调用设置catchpoint
- 为vfork调用设置catchpoint
- 为exec调用设置catchpoint
- 为系统调用设置catchpoint
- 通过为ptrace调用设置catchpoint破解anti-debugging的程序
打印
- 打印ASCII和宽字符字符串
- 打印STL容器中的内容
- 打印大数组中的内容
- 打印数组中任意连续元素值
- 打印数组的索引下标
- 格式化打印数组
- 打印函数局部变量的值
- 打印进程内存信息
- 打印静态变量的值
- 打印变量的类型和所在文件
- 打印内存的值
- 打印源代码行
- 每行打印一个结构体成员
- 按照派生类型打印对象
- 指定程序的输入输出设备
- 使用“$\_”和“$\__”变量
- 打印程序动态分配内存的信息
- 打印调用栈帧中变量的值
多进程/线程
- 调试已经运行的进程
- 调试子进程
- 同时调试父进程和子进程
- 查看线程信息
- 打印所有线程的堆栈信息
- 在Solaris上使用maintenance命令查看线程信息
- 不显示线程启动和退出信息
- 只允许一个线程运行
- 使用“$_thread”变量
- 一个gdb会话中同时调试多个程序
- 打印程序进程空间信息
- 使用“$_exitcode”变量