How do you add breakpoint actions via the LLDB command line?

北城以北 提交于 2019-12-02 23:52:56

Easy peasy with the breakpoint command add command. Type help breakpoint command add for details but here's an example.

int main ()
{
    int i = 0;
    while (i < 30)
    {
        i++; // break here
    }
}

Run lldb on this. First, put a breakpoint on the source line with "break" somewhere in it (nice shorthand for examples like this but it basically has to grep over your sources, so not useful for larger projects)

(lldb) br s -p break
Breakpoint 1: where = a.out`main + 31 at a.c:6, address = 0x0000000100000f5f

Add a breakpoint condition so the breakpoint only stops when i is a multiple of 5:

(lldb) br mod -c 'i % 5 == 0' 1

Have the breakpoint print the current value of i and backtrace when it hits:

(lldb) br com add 1
Enter your debugger command(s).  Type 'DONE' to end.
> p i
> bt
> DONE

and then use it:

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!