> On Mar 28, 2015, at 10:25 AM, Ziming Song <s.zim...@hotmail.com> wrote:
> 
> Thank you for your detailed explanation.
> 
> My GUI front end is quite simple, and I set the SBDebugger to synchronous 
> mode to make my life easier (`debugger.SetAsync(false)`). Besides, I only use 
> single thread, so every time the API call returns, I can guarantee that I'm 
> not in the middle of executing any other api function.
> 
> For example, the "Resume" button calls `process.Continue()`, when 
> `process.Continue()` returns, we can guarantee that the debuggee is not 
> active executing, so we call another function called `handleDebugEvent` to 
> check its state, if the debugge is in eStateStopped, it grab the current 
> value of local variables and print them in the gui.
> 
> Other buttons works similar, after doing their work, they call 
> `handleDebugEvent` to check state and dispatch event.
> 
> Since I can't find any tutorials on LLDB API besides generated docs, I can 
> only come up with that strategy.

Take a look at:

svn cat 
http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/process_events.py

This tells you how to handle events correctly. The problem with your approach 
is you won't be able to interrupt a running process because you will be stuck 
in process.Continue(), so you really do need to switch over to using an event 
loop as the python above will show you exactly how to do it.

Greg
_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to