-
断点
- 条件断点
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 类名:函数名
: 可以定位某一个类中的函数;