On Thu, Sep 18, 2014 at 02:57:50PM -0700, d...@burble.org wrote:
> checkout the llvm/clang/lldb sources as if on Linux (i.e. with lldb in 
> llvm/tools/lldb)
> cd ~/llvm
> mkdir build_ninja && cd build_ninja
> cmake -G Ninja -DCMAKE_CXX_FLAGS="-std=c++11" -DCMAKE_BUILD_TYPE=Debug ..
> ninja

While the above steps will get the lldb-mi app built, that's not enuogh.
Here's an update on some issues I ran into (please speak up if anyone has
ideas for why I had these issues and/or how to fix):

- Building with cmake+ninja doesn't create dSYM files.  To workaround
this I ran dsymutil on the files, e.g. in build_ninja directory do:
    dsymutil bin/lldb-3.6.0
    dsymutil bin/lldb-mi-3.6.0
    dsymutil lib/liblldb.3.6.0.dylib

- Building with cmake+ninja doesn't codesign correctly for some reason,
because when you try to debug an app you get
    "error: process launch failed: unable to locate debugserver".
My workaround for this was to point LLDB_DEBUGSERVER_PATH at a debugserver
I built in the XCode IDE (which somehow is able to get the codesigning right):
    export 
LLDB_DEBUGSERVER_PATH=/Users/dawn/lldb/Xcode/DerivedData/lldb-adprtpcrhggcnrajjedcatojtgnr/Build/Products/Debug/debugserver
You can also point it to XCode's debugserver:
    export 
LLDB_DEBUGSERVER_PATH=/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/debugserver
Note: trying the steps described here
    https://gist.github.com/thlorenz/a068c202f2487ec13809 didn't work for me.

- Running lldb-mi had some quirks.  Here's a debug session and embedded
C++-style comments for a simple C++ console app I debugged:

  ~/llvm/build_ninja/bin/lldb-mi-3.6.0 --interpreter
    (gdb)-file-exec-and-symbols /tmp/a.out
    (gdb)-exec-run                      //don't wait for prompt afterwards
         -exec-continue
    (gdb)-break-insert main
    (gdb)-exec-continue
    (gdb)-break-insert x.cpp:8
    (gdb)-exec-continue
    (gdb)-stack-list-arguments 1
    (gdb)-stack-list-locals 0                   //also listed globals
    (gdb)-var-create var1 --thread 1 --frame 0 * i
    (gdb)-var-show-attributes var1
    (gdb)-var-list-children var1                //gets var1 does not exist
    (gdb)-var-evaluate-expression var1          //gets var1 does not exist
    (gdb)-var-delete var1
    (gdb)-stack-info-depth 512 --thread 1 --frame 0
    (gdb)-stack-list-frames --thread 1 --frame 0 1
    (gdb)-exec-next --thread 1 --frame 0
    (gdb)-exec-step --thread 1 --frame 0
    (gdb)-gdb-exit                              //appears to hangs after this
         q                                      //needed to exit

The following don't appear to be implemented yet:
    -stack-info-frame, -data-info-line, -symbol-list-lines,
    -stack-list-variables, -var-evaluate-expression, -var-info-num-children

So it's a great start in spite of the rough edges.  Many thanks to the
contributers for the support! :)

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

Reply via email to