GDB使用小结

基本操作

命令

说明

gdb exceFile

不带命令行参数

gdb -args execFile arg0 ... argn

带命令行参数

r

开始执行(run的简写)。

c

执行到下一个断点(continue的简写)

b <行号>

在某行设置断点(b是break的简写)

b <函数名>

在某函数设置断点

d <断点编号>

删除断点。每次设置断点后,每个断点都会有一个编号

s

单步执行之Step Into

n

单步执行之Step Over

si

汇编指令之Step Into

ni

汇编指令之Step Over

display var

跟踪显示变量var。以后每次程序用到变量var,都会打印其值

undispay <编号>

取消跟踪显示

p var

打印变量var一次。p是print的缩写

多进程/多线程

命令

说明

set follow-fork-mode child

设置fork之后跟踪子进程,而默认是父进程

info thread

查看当前调试进程的线程信息

thread ID

切换跟踪的线程。这里的ID是上面info thread得到的

break file.c:100 thread all

设置一个针对所有线程的断点

打印STL

下载stl-views

将其加入到~/.gdbinit中,即可使用。

正在执行的gdb可以使用source ~/.gdbinit

命令

说明

pvector

std::vector<>

plist

std::list<>

plist_member

std::list<>

pmap

std::map<> std::multimap<>

pmap_member

std::map<> std::multimap<>

pset

std::set<> std::multiset<>

pdequeue

std::deque<>

pstack

std::stack<>

pqueue

std::queue<>

ppqueue

std::priority_queue<>

pbitset

std::bitset

pstring

std::string

pwstring

std::wstring

(2018.6.6,自动迁移到腾讯云技术社区后重新排版。。。。。。。。。。。。。。。。。)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励