<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;" class="">Works for me with top of tree:<div class=""><br class=""></div><div class="">% PYTHONPATH=/tmp/lldb/build/Debug/LLDB.framework/Resources/Python ; ./foo.py )<br class="">Creating a target for './a.out'<br class="">SBBreakpoint: id = 1, name = 'main', module = a.out, locations = 1<br class="">SBProcess: pid = 62855, state = stopped, threads = 1, executable = a.out<br class="">thread #1: tid = 0x558f56, 0x000000010226bf74 a.out`main(argc=1, argv=0x00007fff5d994ec8) at main.cpp:15, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1<br class="">frame #0: 0x000000010226bf74 a.out`main(argc=1, argv=0x00007fff5d994ec8) at main.cpp:15<br class="">SBFunction: id = 0x0000004b, name = main, type = main<br class="">a.out[0x100000f60]: pushq  %rbp<br class="">a.out[0x100000f61]: movq   %rsp, %rbp<br class="">a.out[0x100000f64]: xorl   %eax, %eax<br class="">a.out[0x100000f66]: movl   $0x0, -0x4(%rbp)<br class="">a.out[0x100000f6d]: movl   %edi, -0x8(%rbp)<br class="">a.out[0x100000f70]: movq   %rsi, -0x10(%rbp)<br class="">a.out[0x100000f74]: popq   %rbp<br class="">a.out[0x100000f75]: retq   </div><div class=""><br class=""></div><div class="">this is on a Mac though. Might be something specific to linux.</div><div class=""><br class=""></div><div class="">Greg</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 13, 2017, at 10:23 AM, Roman Popov <<a href="mailto:ripopov@gmail.com" class="">ripopov@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">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 class=""><div class="gmail_quote">2017-02-13 21:21 GMT+03:00 Greg Clayton <span dir="ltr" class=""><<a href="mailto:gclayton@apple.com" target="_blank" class="">gclayton@apple.com</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">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" class=""><div class=""><br class=""></div><div class="">Greg</div></font></span><div class=""><div class="h5"><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 13, 2017, at 10:19 AM, Roman Popov <<a href="mailto:ripopov@gmail.com" target="_blank" class="">ripopov@gmail.com</a>> wrote:</div><br class="m_-4422590953295905246Apple-interchange-newline"><div class=""><div dir="ltr" class="">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 class=""><br class=""></div><div class="">Can I get some diagnostics? Any log files? </div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">2017-02-13 20:11 GMT+03:00 Greg Clayton <span dir="ltr" class=""><<a href="mailto:gclayton@apple.com" target="_blank" class="">gclayton@apple.com</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">The example code is:<div class=""><br class=""></div><div class=""><pre class=""><tt class=""><font color="green" class="">#!/usr/bin/python</font>

import lldb
import os

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

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

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

<font color="green" class=""># 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" class=""># Create a target from a file and arch</font>
print "Creating a target for '%s'" % exe

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

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

    print main_bp

    <font color="green" class=""># 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" class=""># Make sure the launch went ok</font>
    if process:
        <font color="green" class=""># Print some simple process info</font>
        state = process.GetState ()
        print process
        if state == lldb.eStateStopped:
            <font color="green" class=""># Get the first thread</font>
            thread = process.GetThreadAtIndex (0)
            if thread:
                <font color="green" class=""># Print some simple thread info</font>
                print thread
                <font color="green" class=""># Get the first frame</font>
                frame = thread.GetFrameAtIndex (0)
                if frame:
                    <font color="green" class=""># Print some simple frame info</font>
                    print frame
                    function = frame.GetFunction()
                    <font color="green" class=""># See if we have debug info (a function)</font>
                    if function:
                        <font color="green" class=""># We do have a function, print some info for the function</font>
                        print function
                        <font color="green" class=""># Now get all instructions for this function and print them</font>
                        insts = function.GetInstructions(targe<wbr class="">t)
                        disassemble_instructions (insts)
                    else:
                        <font color="green" class=""># See if we have a symbol in the symbol table for where we stopped</font>
                        symbol = frame.GetSymbol();
                        if symbol:
                            <font color="green" class=""># We do have a symbol, print some info for the symbol</font>
                            print symbol</tt></pre><div class=""><br class=""></div><div class="">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 class=""><br class=""></div><div class="">Greg</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class=""><div class="m_-4422590953295905246h5"><div class="">On Feb 11, 2017, at 10:07 AM, Roman Popov via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank" class="">lldb-dev@lists.llvm.org</a>> wrote:</div><br class="m_-4422590953295905246m_-4638887264522284321Apple-interchange-newline"></div></div><div class=""><div class=""><div class="m_-4422590953295905246h5"><div dir="ltr" class=""><div class="">I'm testing example from <a href="https://lldb.llvm.org/python-reference.html" target="_blank" class="">https://lldb.llvm.org/pyt<wbr class="">hon-reference.html</a> (USING THE LLDB.PY MODULE IN PYTHON)  on Ubuntu 16.04</div><div class=""><br class=""></div><div class="">For some reason it works only with LLDB 3.9, is it because LLDB 4.0/5.0 are not stable yet?</div><div class=""><br class=""></div><div class=""><pre class="">#5.0   -- Does not work</pre><pre class="">deb <a href="http://apt.llvm.org/xenial/" target="_blank" class="">http://apt.llvm.org/xenial/</a> llvm-toolchain-xenial main</pre><pre class=""># 3.9  -- Works</pre><pre class="">deb <a href="http://apt.llvm.org/xenial/" target="_blank" class="">http://apt.llvm.org/xenial/</a> llvm-toolchain-xenial-3.9 main</pre><pre class=""># 4.0  -- Does not work</pre><pre class="">deb <a href="http://apt.llvm.org/xenial/" target="_blank" class="">http://apt.llvm.org/xenial/</a> llvm-toolchain-xenial-4.0 main</pre><pre class=""><br class=""></pre><pre class=""><font class="">>clang-5.0 -g test.cpp<br class=""></font></pre><pre class=""><font class="">>./python_example.py</font></pre><pre class=""><font class="">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 class="">Roman</div></div></div></div>
______________________________<wbr class="">_________________<br class="">lldb-dev mailing list<br class=""><a href="mailto:lldb-dev@lists.llvm.org" target="_blank" class="">lldb-dev@lists.llvm.org</a><br class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/lldb-dev</a><br class=""></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>