使用gdb调试

Posted caiminfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用gdb调试相关的知识,希望对你有一定的参考价值。

启用gdb进行调试二进制程序,必须在二进制程序在采用gcc或g++编译时加入-g参数

启动gdb进行调试的几种形式:

直接启动gdb程序进行调试program程序

gdb program

启动gdb挂载入进程号为pid的进程进行调试,挂载后gdb会暂停该进程的执行

gdb -p pid

若程序运行崩溃产生了coredump文件,可采用该方式进行调试

gdb program coredumpfile

带入相应的参数启动gdb调试program程序

gdb --args program arg1 arg2

进入gdb后,使用相应的命令进行调试,常用命令包括:

命令 简写 作用
运行相关
run r 开始运行程序
continue c 继续运行,直到遇到断点或者程序结束
next n 同栈帧内单步执行,即不进入函数调用中
step s 单步执行,如遇函数则进入函数调用中
finish 执行至当前栈帧结束返回
quit 推出gdb
打印相关
backtrace bt 打印当前栈帧信息
print arg p 打印当前栈帧中变量arg的值
list l 打印当前执行点附近的代码
info thread i t 打印进程内所有线程的顶层栈信息
info breakpoints i b 打印设置的所有断点
info locals 打印当前栈帧中所有局部变量的值
断点相关
break filename:line b 在文件名为filename的第line行设置断点
delete n del 删除第n个断点
disable n dis 停用第n个断点
enable n en 启用第n个断点
ignore n cnt 忽略断点ncnt
切换相关
frame n f 跳转至第n个栈帧
thread n 跳转至第n个线程
其它
thread apply all cmd 所有线程执行cmd命令
thread apply n1 n2 cmd 线程n1n2执行cmd命令

以上是关于使用gdb调试的主要内容,如果未能解决你的问题,请参考以下文章

使用GNU/gdb调试Linux C/C++可执行程序查看出错源代码、设置断点

gdb调试中怎么查看其中一行的汇编代码

GDB调试汇编分析

代码调试篇:gdb调试快速入门指南

代码调试篇:如何编写 gdb 自定义命令

代码调试篇:如何编写 gdb 自定义命令