[lldb-dev] Using LLDB to catch a spurious segfault: scripting, etc.

Jim Ingham jingham at apple.com
Thu Mar 31 19:21:49 PDT 2011

Oh, sorry, you're probably running this inside of lldb?  I don't think that works yet.  Running from python while inside lldb it tricky because lldb is already waiting on the debugger, and so the two fight over events, with Python losing... 

Adding a --batch mode to the main lldb driver shouldn't be that hard, however.


On Mar 31, 2011, at 6:15 PM, William Knop wrote:

> Hello all,
> I am attempting to use lldb to debug a segfault in my program that
> happens sporadically. For instance, running `for ((i=0;i<1000;i++)) {
> ./myprogram; };` at a shell prompt may show one. It seems there is no
> way to set lldb to run automatically and exit upon success from the
> CLI, so I've been exploring lldb's python scripting.
> The goal of the script is to loop, launching the process until
> completion or error; if there's an error, I need the script to dump me
> back into the lldb interpreter to investigate the bug. Here's what
> I've come up with so far:
>> import time
>> dbg = lldb.SBDebugger.FindDebuggerWithID(lldb.debugger_unique_id)
>> ci = dbg.GetCommandInterpreter()
>> res = lldb.SBCommandReturnObject()
>> dbg.SetAsync(False)
>> for i in range(1, 1000):
>>  ci.HandleCommand("process launch", res)
>>  while (not res.Succeeded()) : time.sleep(0.1)
>>  res.Clear()
> Unfortunately, however, it seems the command does not run to
> completion, no matter how long I wait. Then when I call
> `HandleCommand` a second time, lldb deadlocks. I intended to
> eventually check `res.GetError()` or `res.GetStatus()` and call
> `quit()` when the error appeared, but I haven't made it that far. I
> also initially explored calling `dbg.GetTargetAtIndex(0).Launch()`
> rather than `HandleCommand`, but I wasn't entirely sure how to go
> about it. Any help would be much appreciated!
> Will
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

More information about the lldb-dev mailing list