如果你从Xcode编辑一个断点,那么每次遇到断点时都有一个超级有用的选项来添加一个“Action”来自动执行。
如何从LLDB命令行添加此类操作?
答案 0 :(得分:21)
使用breakpoint command add
命令轻松自如。输入help breakpoint command add
了解详细信息,但这是一个示例。
int main ()
{
int i = 0;
while (i < 30)
{
i++; // break here
}
}
在此上运行lldb。首先,在源代码行中放置一个断点,其中包含“break”(对于这样的示例来说,这是一个很好的简写,但它基本上必须对你的源代码进行grep,因此对大型项目没用)
(lldb) br s -p break
Breakpoint 1: where = a.out`main + 31 at a.c:6, address = 0x0000000100000f5f
添加断点条件,以便断点仅在i
为5的倍数时停止:
(lldb) br mod -c 'i % 5 == 0' 1
让断点打印出i
的当前值并在碰到时回溯:
(lldb) br com add 1
Enter your debugger command(s). Type 'DONE' to end.
> p i
> bt
> DONE
然后使用它:
Process 78674 stopped and was programmatically restarted.
Process 78674 stopped and was programmatically restarted.
Process 78674 stopped and was programmatically restarted.
Process 78674 stopped and was programmatically restarted.
Process 78674 stopped
* thread #1: tid = 0x1c03, 0x0000000100000f5f a.out`main + 31 at a.c:6, stop reason = breakpoint 1.1
#0: 0x0000000100000f5f a.out`main + 31 at a.c:6
3 int i = 0;
4 while (i < 30)
5 {
-> 6 i++; // break here
7 }
8 }
(int) $25 = 20
* thread #1: tid = 0x1c03, 0x0000000100000f5f a.out`main + 31 at a.c:6, stop reason = breakpoint 1.1
#0: 0x0000000100000f5f a.out`main + 31 at a.c:6
#1: 0x00007fff8c2a17e1 libdyld.dylib`start + 1