<div dir="ltr">Do you mean you were able to reproduce it? Because it is used to work on trunk month ago, but since then I've switched from ubuntu 14.04 to fresh 16.04 and it no longer works for me. </div><div class="gmail_extra"><br><div class="gmail_quote">2017-02-13 21:21 GMT+03:00 Greg Clayton <span dir="ltr"><<a href="mailto:gclayton@apple.com" target="_blank">gclayton@apple.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I would be probably best to just step through it and see why it is incorrectly returning. We know it is broken. We should also add a test for this so we don't regress again.<span class="HOEnZb"><font color="#888888"><div><br></div><div>Greg</div></font></span><div><div class="h5"><div><br><div><blockquote type="cite"><div>On Feb 13, 2017, at 10:19 AM, Roman Popov <<a href="mailto:ripopov@gmail.com" target="_blank">ripopov@gmail.com</a>> wrote:</div><br class="m_-4422590953295905246Apple-interchange-newline"><div><div dir="ltr">Yes Greg, this was my expectation that it should not return until stops on break-point. But I had to downgrade sequentially from 5.0 to 4.0 to 3.9 to make it work as expected.<div><br></div><div>Can I get some diagnostics? Any log files? </div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-02-13 20:11 GMT+03:00 Greg Clayton <span dir="ltr"><<a href="mailto:gclayton@apple.com" target="_blank">gclayton@apple.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">The example code is:<div><br></div><div><pre><tt><font color="green">#!/usr/bin/python</font>

import lldb
import os

def disassemble_instructions(insts<wbr>):
    for i in insts:
        print i

<font color="green"># Set the path to the executable to debug</font>
exe = "./a.out"

<font color="green"># Create a new debugger instance</font>
debugger = lldb.SBDebugger.Create()

<font color="green"># When we step or continue, don't return from the function until the process 
# stops. Otherwise we would have to handle the process events ourselves which, while doable is
#a little tricky.  We do this by setting the async mode to false.</font>
debugger.SetAsync (False)

<font color="green"># Create a target from a file and arch</font>
print "Creating a target for '%s'" % exe

target = debugger.CreateTargetWithFileA<wbr>ndArch (exe, lldb.LLDB_ARCH_DEFAULT)

if target:
    <font color="green"># If the target is valid set a breakpoint at main</font>
    main_bp = target.BreakpointCreateByName ("main", target.GetExecutable().GetFile<wbr>name());

    print main_bp

    <font color="green"># Launch the process. Since we specified synchronous mode, we won't return
    # from this function until we hit the breakpoint at main</font>
    process = target.LaunchSimple (None, None, os.getcwd())
    
    <font color="green"># Make sure the launch went ok</font>
    if process:
        <font color="green"># Print some simple process info</font>
        state = process.GetState ()
        print process
        if state == lldb.eStateStopped:
            <font color="green"># Get the first thread</font>
            thread = process.GetThreadAtIndex (0)
            if thread:
                <font color="green"># Print some simple thread info</font>
                print thread
                <font color="green"># Get the first frame</font>
                frame = thread.GetFrameAtIndex (0)
                if frame:
                    <font color="green"># Print some simple frame info</font>
                    print frame
                    function = frame.GetFunction()
                    <font color="green"># See if we have debug info (a function)</font>
                    if function:
                        <font color="green"># We do have a function, print some info for the function</font>
                        print function
                        <font color="green"># Now get all instructions for this function and print them</font>
                        insts = function.GetInstructions(targe<wbr>t)
                        disassemble_instructions (insts)
                    else:
                        <font color="green"># See if we have a symbol in the symbol table for where we stopped</font>
                        symbol = frame.GetSymbol();
                        if symbol:
                            <font color="green"># We do have a symbol, print some info for the symbol</font>
                            print symbol</tt></pre><div><br></div><div>We set the async mode to false, so target.LaunchSimple() should not return until the process is stopped or exited. Note in your example it is returning with "state = launching", so this is what is failing. For some reason synchronous mode is not being obeyed.</div><div><br></div><div>Greg</div><div><br></div><div><blockquote type="cite"><div><div class="m_-4422590953295905246h5"><div>On Feb 11, 2017, at 10:07 AM, Roman Popov via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:</div><br class="m_-4422590953295905246m_-4638887264522284321Apple-interchange-newline"></div></div><div><div><div class="m_-4422590953295905246h5"><div dir="ltr"><div>I'm testing example from <a href="https://lldb.llvm.org/python-reference.html" target="_blank">https://lldb.llvm.org/pyt<wbr>hon-reference.html</a> (USING THE LLDB.PY MODULE IN PYTHON)  on Ubuntu 16.04</div><div><br></div><div>For some reason it works only with LLDB 3.9, is it because LLDB 4.0/5.0 are not stable yet?</div><div><br></div><div><pre>#5.0   -- Does not work</pre><pre>deb <a href="http://apt.llvm.org/xenial/" target="_blank">http://apt.llvm.org/xenial/</a> llvm-toolchain-xenial main</pre><pre># 3.9  -- Works</pre><pre>deb <a href="http://apt.llvm.org/xenial/" target="_blank">http://apt.llvm.org/xenial/</a> llvm-toolchain-xenial-3.9 main</pre><pre># 4.0  -- Does not work</pre><pre>deb <a href="http://apt.llvm.org/xenial/" target="_blank">http://apt.llvm.org/xenial/</a> llvm-toolchain-xenial-4.0 main</pre><pre><br></pre><pre><font>>clang-5.0 -g test.cpp<br></font></pre><pre><font>>./python_example.py</font></pre><pre><font>Creating a target for './a.out'
SBBreakpoint: id = 1, name = 'main', locations = 1
SBProcess: pid = 0, state = launching, threads = 0, executable = a.out</font></pre></div>Thanks,<div>Roman</div></div></div></div>
______________________________<wbr>_________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/lldb-dev</a><br></div></blockquote></div><br></div></div></blockquote></div><br></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>