断点

一、断点

  1. 在匿名空间设置断点

    匿名空间中的bar函数设置断点:

    break (anonymous namesapce)::bar
    
  2. 在程序地址上打断点

    当调试汇编程序,或者没有调试信息的程序时,经常需要在程 序地址上打断点,方法为 b *address

  3. 在程序入口处打断点

    获取程序入口地址:

    1. info files
    2. info address _start
    3. readelf -h 程序名

    获得地址后通过在程序地址上打断点即可。

  4. 在文件行号上打断点

    break number(在当前文件某一行打断点)

    break file:number(在file某一行打断点)

    gdb会对所有匹配的文件设置断点,可以通过指定路径来区分相关的文件名

    break path_to_file/file:number

    缺点:更改源代码后,断点就可能不是以前的断点了。

  5. 保存已经设置的断点

    save breakpoints file-name-to-save

    下次调试时,可以通过如下命令批量设置断点

    source file-name-to-save

  6. 设置临时断点

    tbreak(简写tb),设置断点后,断点命中一次后就被删掉了。

  7. 设置条件断点

    break … if cond

    例如:break 10 if i==101

  8. 忽略断点

    ignore bnum count 接下来count次编号为bnum的断点触发都不会让程序中断,只有第count+1次断点才会触发程序中断。

二、观察点

  1. 设置观察点

  2. 设置观察点只针对特定线程生效

  3. 设置读观察点

  4. 设置读写观察点

三、Catchpoint