<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Are you in synchronous mode?</div><div>If not, or if you are not sure what the question even means, you most probably are not.</div><div>The way LLDB works is an event system. You tell your process to run and that spawns a series of events. Events that you have to consume.</div><div>You tell your process to stop, and when it stops, you get an event that tells you so.</div><div>Anything until then, process is NOT stopped, and that's why you get errors saying "process is running", because you have yet to see the stop event and consume it.</div><div>If you want an example of how to setup an automated interaction with LLDB, part of your checkout should be an LLDBPerf project</div><div>Look around in TestCase.cpp there (<a href="http://llvm.org/svn/llvm-project/lldb/trunk/tools/lldb-perf/lib/TestCase.cpp">http://llvm.org/svn/llvm-project/lldb/trunk/tools/lldb-perf/lib/TestCase.cpp</a>) - the Loop() method implements a state machine that correctly consumes the events - that might be a good starting point.</div><div>To keep it really simple if you're just prototyping, SBDebugger::SetAsync(false) will set LLDB in synchronous mode. In this mode of operation, the API calls consume the events before returning, and relieve you of that duty - I am not sure how complete and reliable the synchronous mode is, since we do not use it.</div><br><div><div>On May 29, 2013, at 5:07 PM, Sebastien Metrot <<a href="mailto:meeloo@gmail.com">meeloo@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=us-ascii"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hello,<div><br></div><div>Now that my build problems are fixed I have started to do a little more than extracting symbols from OSX applications and I have a strange situation. </div><div>I create a target, add a symbolic breakpoint on 'main', launch the process and then inspect the threads + their stack frames. What troubles me is that I correctly find 1 thread but it always says there is 0 frames, meanwhile calling the method lldb::SBThread::GetStatus(..) and displaying its results correctly shows me what I'm expecting (a stack frame with the breakpoint on my main function). I have tried to step in lldb code and from what I understand GetNumFrames & all return 0 because it says the process is still running as it is unable to get some lock/mutex.</div><div><br></div><div>When I enable logs for API here is what I get:</div><div><div style="margin: 0px; font-size: 10px; font-family: 'Source Code Pro'; "><div style="margin: 0px; "><div style="margin: 0px; ">LLDB> 1369872253.995728 SBProcess(0x1250bec00)::GetNumThreads () => 1</div><div style="margin: 0px; ">LLDB> 1369872253.995767 SBProcess(0x1250bec00)::Stop () => SBError (0x105602010): success</div><div style="margin: 0px; ">LLDB> 1369872253.995790 SBProcess(0x1250bec00)::GetThreadAtIndex (index=0) => SBThread(0x110b313d0)</div><div style="margin: 0px; ">LLDB> 1369872253.995807 SBThread(0x110b313d0)::GetNumFrames() => error: process is running</div><div style="margin: 0px; ">LLDB> 1369872253.995816 SBThread(0x110b313d0)::GetNumFrames () => 0</div><div style="margin: 0px; ">LLDB> 1369872253.995826 SBThread(0x110b313d0)::GetStopReason() => error: process is running</div><div style="margin: 0px; ">LLDB> 1369872253.995833 SBThread(0x110b313d0)::GetStopReason () => invalid</div><div style="margin: 0px; ">LLDB> 1369872253.999252 SBThread(0x110b313d0)::GetName() => error: process is running</div><div style="margin: 0px; ">LLDB> 1369872253.999277 SBThread(0x110b313d0)::GetName () => NULL</div><div><br></div><div><span style="font-family: Helvetica; font-size: medium; ">I am clearly missing something here but what?</span></div></div></div></div><div><br></div><div>S.</div><div> <br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>-- </div><div>Sebastien Metrot</div><div>Yasound - CTO - Cofounder</div><div><a href="mailto:sebastien@yasound.com">sebastien@yasound.com</a></div></div></span></div></span></div></span></div></span></div></span>
</div>

<br></div></div>_______________________________________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev<br></blockquote></div><br></body></html>