如果你从
Xcode编辑一个断点,有一个超级有用的选项,可以添加一个“Action”,以便在每次遇到断点时自动执行.
如何从LLDB命令行添加此类操作?
解决方法
使用breakpoint命令添加命令很容易.键入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,stop reason = breakpoint 1.1 #0: 0x0000000100000f5f a.out`main + 31 at a.c:6 #1: 0x00007fff8c2a17e1 libdyld.dylib`start + 1