在Oceanbase调试中,必须用到gdb,将常用命令搜集记录如下:
1. attach: 用gdb调试一个正在运行中的进程
gdb <program> PID
2. br: 设置断点
br filename:line_num
br namespace::classname::func_name
3. n: 单步跳过 s: 单步进入
4.finish:执行到函数retun返回
5. list: 列出当前位置之后的10行代码;list line_number: 列出line_number之后的十行代码
6. bt(backtrace):列出调用栈
7. info locals:列出当前函数的局部变量
8. p var_:打印变量值
9. info breakpoints:列出所有断点
10. delete breakpoints:删除所有断点;delete breakpoints id:删除编号为id的断点;disable/enable breakpoints id:禁用/启用断点
11. break ... if ... 条件中断
还有一个小问题,网上很少提到:被调试的程序必须和源码放在同一台机器上,才能用list命令列出源码,否则提示找不到。
直接回车,总可以重复执行上一个命令。
参考:http://baigoogledu.blog.51cto.com/738227/153948
涉及到多线程调试,参考:http://wenku.baidu.com/view/ab2b0623bcd126fff7050ba0.html