断点和监控点
断点 (breakpoint)
根据函数名或者方法名设置断点
- gdb
- lldb
(gdb) break main
(lldb) breakpoint set --name main
(lldb) br s -n main
(lldb) b main
# or breakpoint on C++ method:
(lldb) breakpoint set --method main
(lldb) br s -M main
根据源文件行号设置断点
- gdb
- lldb
(gdb) break test.c:12
(gdb) b test.c:12
(lldb) breakpoint set --file test.c --line 12
(lldb) br s -f test.c -l 12
(lldb) b test.c:12
设置条件断点
- gdb
- lldb
(gdb) break foo if strcmp(y,"hello") == 0
(lldb) breakpoint set --name foo --condition '(int)strcmp(y,"hello") == 0'
(lldb) br s -n foo -c '(int)strcmp(y,"hello") == 0'
删除某个断点
- gdb
- lldb
(gdb) delete 1
# or delete all breakpoints at current line
(gdb) clear
(lldb) breakpoint delete 1
(lldb) br del 1
禁用/启用断点
-
禁用断点
- gdb
- lldb
(gdb) disable 1
(lldb) breakpoint disable 1
(lldb) br dis 1 -
启用断点
- gdb
- lldb
(gdb) enable 1
(lldb) breakpoint enable 1
(lldb) br en 1
通过正则表达式设置断点
-
通过正则表达式匹配函数,来设置断点
- gdb
- lldb
(gdb) rbreak [REGULAR EXPRESSION]
(lldb) breakpoint set --func-regex [REGULAR EXPRESSION]
(lldb) br s -r [REGULAR EXPRESSION] -
通过正则表达式匹配源文件内容,来设置断点
- gdb
- lldb
(gdb) shell grep -e -n [REGULAR EXPRESSION] [SOURCE FILE]
(gdb) break source-file:line-number(lldb) breakpoint set --source-pattern [REGULAR EXPRESSION] --file [SOURCE FILE]
(lldb) br s -p [REGULAR EXPRESSION] -f [SOURCE FILE]
列出所有断点
- gdb
- lldb
(gdb) info break
(lldb) breakpoint list
(lldb) br l