<div dir="ltr">Oops, thanks Greg!<div><br></div><div>Also it seems that I was not setting up the listener in a proper way, I needed to do debugger.GetListener() instead of my <span style="font-size:13px;font-family:arial,sans-serif">lldb.SBListener("event_</span><span style="font-size:13px;font-family:arial,sans-serif">listener") which I copy&pasted from somewhere else :(</span></div>

<div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">Working smoothly now. Thanks a lot,</span></div><div><span style="font-size:13px;font-family:arial,sans-serif">HG</span></div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Mar 17, 2014 at 6:14 PM, Greg Clayton <span dir="ltr"><<a href="mailto:gclayton@apple.com" target="_blank">gclayton@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yes, you aren't checking if the process state. See the python example in the SVN repository:<br>
<br>
svn cat <a href="http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/process_events.py" target="_blank">http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/process_events.py</a><br>
<br>
It does the process events correctly and should serve as a great starting point for you.<br>
<div><div class="h5"><br>
<br>
On Mar 17, 2014, at 9:29 AM, Hikaru Gosun <<a href="mailto:hgosun@gmail.com">hgosun@gmail.com</a>> wrote:<br>
<br>
> Hi,<br>
><br>
> I have a small script to debug a program in OSX that looks more or less like this:<br>
><br>
> debugger = lldb.SBDebugger.Create()<br>
> target = debugger.CreateTargetWithFileAndArch(exe, lldb.LLDB_ARCH_DEFAULT_64BIT)<br>
> launch_info = lldb.SBLaunchInfo(args)<br>
> launch_info.SetLaunchFlags(lldb.eLaunchFlagNone)<br>
> error = lldb.SBError()<br>
> process = target.Launch(launch_info, error)<br>
> if not error.Success():<br>
>     print args, str(error)<br>
>     return<br>
><br>
> listener = lldb.SBListener("event_listener")<br>
> process.GetBroadcaster().AddListener(listener, lldb.SBProcess.eBroadcastBitStateChanged)<br>
> done = 0<br>
> while not done:<br>
>     event = lldb.SBEvent()<br>
>     if listener.WaitForEvent(10, event):<br>
>       state = lldb.SBProcess.GetStateFromEvent(event)<br>
>       print state<br>
>       for thread in process:<br>
>         print thread, thread.GetFrameAtIndex(0)<br>
>       process.Continue()<br>
>     else:<br>
>       done = 1<br>
><br>
> My intention is to debug the target with some kind of timeout, that's why I'm trying to use the async mode and use the timeout in WaitForEvent(). The problem that I'm facing is that once WaitForEvent() succeeds, there's no way I can get access to the thread information (for example to get frame info for each thread). This is the output from the script:<br>

><br>
> 5<br>
> SBThread: tid = 0x2b9672 No value<br>
> SBThread: tid = 0x2b9686 No value<br>
> SBThread: tid = 0x2b9687 No value<br>
> SBThread: tid = 0x2b9689 No value<br>
> SBThread: tid = 0x2b968a No value<br>
> SBThread: tid = 0x2b96be No value<br>
> SBThread: tid = 0x2b96bf No value<br>
> SBThread: tid = 0x2b96c0 No value<br>
><br>
> This is for the lldb version that comes with XCode (lldb-300.2.53)<br>
><br>
> Any ideas? Is there anything wrong with my approach?<br>
><br>
> Thanks,<br>
> HG<br>
</div></div>> _______________________________________________<br>
> lldb-dev mailing list<br>
> <a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
<br>
</blockquote></div><br></div>