GDB调试入门

首先在编译时,必须把调试信息加到可执行文件中,使用gcc/g++的-g参数可以做到这点
指令介绍
help 查询指令,查看其它指令的用法,如help print

shell 启动标准shell执行command string,如shell ps,直接shell也可,输入quit退出shell

print 用于打印的指令,搭配参数使用,类似print/x(或p/x),[x/d/u/o/t/a/c/f/s]

set 用于设置gdb内部的一些环境与运行时的参数

set logging on 保存当前调试信息到gdb.txt

set args xxx 传递参数到程序(也可以通过r xxx传递参数)

show 描述GDB本身状态

info(缩写i) 描述程序的状态

info args

info registers

info breakpoints

info thread

-cd/directory 用于指定源码路径(当前gdb的位置不在源码目录下或二进制不在源码目录下,否则会自动查找)

file 用于加载调试用的二进制文件

backtrace(缩写bt) 查看调用栈,[full详细信息|n打印n层调用栈]

next 控制程序向下执行

list(缩写为l) 用于列出源码

thread(缩写为t) 用于切换线程

thread apply all + 指令,对所有线程执行指令

x 以多种格式查看内存

break 设置程序断点,例如 b [func]:num

break [func] if [cond] 条件断点

break *+地址,对地址打断点

delete + 断点号,删除断点

continue 继续执行程序

conmands 在break后增加一些指令,增加break的可操作性

commands + 断点号,输入断点触发信息,end结束

define 将gdb的指令组合起来,方便连续的重复使用,end结束

原文地址:https://www.cnblogs.com/hunter-w/p/12023271.html