欢迎关注我的个人公众号:coredump。
基本操作
命令 | 说明 |
---|---|
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 |