CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
一、断点
-
在匿名空间设置断点
匿名空间中的bar函数设置断点:
break (anonymous namesapce)::bar
-
在程序地址上打断点
当调试汇编程序,或者没有调试信息的程序时,经常需要在程 序地址上打断点,方法为 b *address
-
在程序入口处打断点
获取程序入口地址:
- info files
- info address _start
- readelf -h 程序名
获得地址后通过在程序地址上打断点即可。
-
在文件行号上打断点
break number(在当前文件某一行打断点)
break file:number(在file某一行打断点)
gdb会对所有匹配的文件设置断点,可以通过指定路径来区分相关的文件名
break path_to_file/file:number
缺点:更改源代码后,断点就可能不是以前的断点了。
-
保存已经设置的断点
save breakpoints file-name-to-save
下次调试时,可以通过如下命令批量设置断点
source file-name-to-save
-
设置临时断点
tbreak(简写tb),设置断点后,断点命中一次后就被删掉了。
-
设置条件断点
break … if cond
例如:break 10 if i==101
-
忽略断点
ignore bnum count 接下来count次编号为bnum的断点触发都不会让程序中断,只有第count+1次断点才会触发程序中断。
二、观察点
-
设置观察点
-
设置观察点只针对特定线程生效
-
设置读观察点
-
设置读写观察点