gdb高阶调试命令
-
断点
- 条件断点
condition 1 value==1: 此次的1表示break的编号,之后的value==1表示条件判断;即在value为1时,命中编号为1的断点;ignore 1 4: 忽略断点为1的前4次命中,第5次开始,就需要命中;
d br: 删除所有的断点
- 条件断点
-
打印
p /t var-name: 打印变量名var-name的二进制内容;
-
如何定位动态库中的代码
当编译debug时,符号文件会嵌入到可执行文件中(这一点不像Windows下的可执行文件和符号文件,它们是分开的。)
只有在gdb中start运行起来之后,才会加载动态库,之后才可以对动态库的代码进行断点设置。在main函数之后,先设置一个断点,之后就可以设置动态库的代码。动态库加载之后,可以使用如下命令进行参考:
i sharedlibrary: 查看已经加载的动态库;b 动态库中的代码所在的文件:行号:定位动态库中的所在文件的行号;b 类名:函数名: 可以定位某一个类中的函数;

浙公网安备 33010602011771号