跳到主要内容

断点和监控点

断点 (breakpoint)

根据函数名或者方法名设置断点

(gdb) break main

根据源文件行号设置断点

(gdb) break test.c:12
(gdb) b test.c:12

设置条件断点

(gdb) break foo if strcmp(y,"hello") == 0

删除某个断点

(gdb) delete 1

# or delete all breakpoints at current line

(gdb) clear

禁用/启用断点

  1. 禁用断点

    (gdb) disable 1
  2. 启用断点

    (gdb) enable 1

通过正则表达式设置断点

  1. 通过正则表达式匹配函数,来设置断点

    (gdb) rbreak [REGULAR EXPRESSION]
  2. 通过正则表达式匹配源文件内容,来设置断点

    (gdb) shell grep -e -n [REGULAR EXPRESSION] [SOURCE FILE]
    (gdb) break source-file:line-number

列出所有断点

(gdb) info break

监控点 (watchpoint)

监控进程中某个变量的值

(gdb) watch global_var

监控进程中的某块内存

如果未指定 -x byte_size,则要监视的区域的大小默认为指针大小。

该命令采用原始输入,计算为表达式,返回指向区域开头的无符号整数,位于 -- 选项终止符之后。

(gdb) watch -location g_char_ptr

设置监控的条件

删除监控点

(gdb) delete 1

列出所有的监控点

(gdb) info break