This isn't the appropriate place to discuss lldb-swift build problems, since the swift support is not actually in the llvm.org tree. A better mailing list would be:
https://lists.swift.org/mailman/listinfo/swift-lldb-dev Jim > On Oct 5, 2016, at 12:25 PM, Rex Fenley <r...@remind101.com> wrote: > > Hey! > > I tried building the LLDB target from within Xcode in order to gain > understanding of how this system works at the source level. However, I get > the following error during compilation: > subprocess.CalledProcessError: Command '['python', > '/Users/Rex/Documents/projects/swift-lldb/llvm/tools/swift/utils/build-script', > '--preset=LLDB_Swift_ReleaseAssert', > 'swift_install_destdir=/Users/Rex/Documents/projects/swift-lldb/llvm-build/ReleaseAssert/swift-macosx-x86_64']' > returned non-zero exit status 1 > > And much further up I see > > warning: A compatible version of re2c (>= 0.11.3) was not found; changes to > src/*.in.cc will not affect your build. > > > and > > error: unknown setting: cmark-cmake-options > > How may I fix this/these issues to build and run lldb from Xcode? > > > On Wed, Oct 5, 2016 at 12:05 PM, Rex Fenley <r...@remind101.com> wrote: > That's totally fine for our use case. > > On Wed, Oct 5, 2016 at 11:57 AM, Jim Ingham <jing...@apple.com> wrote: > You would have to be really careful about using "debugger variables" whose > name is not decorated with a "$". After all, this is introducing a global > variable, which will be shadowed by local variables, ivars, file statics for > the current frame's CU, etc. So using the code you've added at various stop > points in the debugging session will be fragile. That's the primary reason > that we don't encourage defining debugger variables in the common identifier > namespace of your program. > > Jim > > > > > On Oct 5, 2016, at 11:41 AM, Rex Fenley <r...@remind101.com> wrote: > > > > Hey Kate! Thanks for all this info, it's really helpful :) > > > > We'd like to have more complex expressions being used from the debugger. > > Some of this would be code written in separate files. It will be difficult > > or at least very tedious to have all our code use "$", is there a way to > > void using "$"? Is there an option we could add to lldb to avoid using "$" > > and still have variables and data-structures globally accessible? I notice > > that within "repl" "$" it's not necessary to use any "$" variables, is > > there a way to elevate the logic "repl" uses into expr? > > > > On Wed, Oct 5, 2016 at 11:29 AM, Kate Stone <k8st...@apple.com> wrote: > >> On Oct 5, 2016, at 10:14 AM, Rex Fenley via lldb-dev > >> <lldb-dev@lists.llvm.org> wrote: > >> > >> Maybe I have that incorrectly, this does seem to work when using lldb from > >> Xcode's console. This doesn't work when typing `lldb` into the terminal > >> and using it from there. I assumed the two were the same. > > > > The same underlying debugger is used in both cases. There can be subtle > > reasons for differences in behavior in the different contexts, but I don’t > > see how they’d apply here. Let’s get to a specific scenario and ensure > > that we can resolve that for you. > > > >> On a separate note, --top-level doesn't seem to work for swift (from Xcode > >> console lldb). We need it to work with swift for the scripts we'll be > >> writing. > >> (lldb) expr -l swift --top-level -- let i = 10 > >> > >> expr -l swift --top-level -- let a = i > >> > >> error: <EXPR>:3:9: error: use of unresolved identifier 'i' > >> > > The --top-level option isn’t meaningful for Swift, so it’s completely > > ignored. The less ambiguous nature of the language allows us to > > automatically determine what are top-level constructs and what’s intended > > to be evaluated in scope. We introduced --top-level for Objective-C / C++ > > primarily to enable declaring functions and anything else that literally > > cannot be written in a local scope. > > > > In your particular example the reason you can’t refer to “i” is completely > > unrelated. Conceptually, every expression you evaluate is wrapped in its > > own scope. So your two subsequent expressions act like this construct : > > > > do { > > let i = 10 > > } > > do { > > let a = i > > } > > > > As you can see, “i” is defined in this expression scope and then goes out > > of scope immediately after execution. This is useful when you want to > > write a multi-line expression that introduces declarations for immediate > > use without having them cluttering up your namespace afterwards. The > > convention used by LLDB for any declaration that you intend to use in later > > expressions is to prefix the name with a dollar sign. So you can do the > > following: > > > > (lldb) expr -l swift -- let $i = 10 > > (lldb) expr -l swift -- let $a = i > > > > … and both “$a” and “$i" will be available in subsequent expressions. > > > > Kate Stone k8st...@apple.com > > Xcode Low Level Tools > > > >> On Wed, Oct 5, 2016 at 10:06 AM, Rex Fenley <r...@remind101.com> wrote: > >> Jim, > >> > >> That doesn't seem to work for us. We're using lldb packaged with Xcode 8 > >> fyi. > >> (lldb) expr --top-level -- NSString *string = [NSString > >> stringWithUTF8String: "This is a string"]; > >> > >> > >> > >> ; Function Attrs: nounwind > >> > >> define internal void @_GLOBAL__sub_I__null_() #0 section > >> "__TEXT,__StaticInit,regular,pure_instructions" { > >> > >> call void @__cxx_global_var_init() > >> > >> ret void > >> > >> } > >> > >> > >> On Tue, Oct 4, 2016 at 4:09 PM, Jim Ingham <jing...@apple.com> wrote: > >> This isn't an issue with ObjC support in general, but rather shows that > >> ObjC string constants are odd beasts. You can work around this pretty > >> easily by making dynamic strings: > >> > >> (lldb) expr --top-level -- NSString *string = [NSString > >> stringWithUTF8String: "This is a string"]; > >> (lldb) expr string > >> (__NSCFString *) $0 = 0x00000001002001b0 @"This is a string" > >> > >> Please file a bug about the problem with ObjC constant strings. > >> > >> Jim > >> > >> > >> > On Oct 4, 2016, at 3:57 PM, Rex Fenley via lldb-dev > >> > <lldb-dev@lists.llvm.org> wrote: > >> > > >> > Hey lldb team! > >> > > >> > I'm trying to use `expr --top-level` from lldb in Xcode but it throws > >> > errors like the following: > >> > > >> > (lldb) expression --top-level -- NSString *str = @"This is a string"; > >> > Error [IRForTarget]: Couldn't replace an Objective-C constant string > >> > with a dynamic string > >> > error: cannot import unsupported AST node ObjCStringLiteral > >> > error: The expression could not be prepared to run in the target > >> > > >> > It seems like top-level only supports raw C code and not Objective-C. Is > >> > there an option we can set to support this? Is there somewhere in lldb's > >> > source code that could help point us to fixing this? > >> > > >> > Thank you, you guys rule! > >> > > >> > -- > >> > Rex Fenley | IOS DEVELOPER > >> > > >> > > >> > Remind.com | BLOG | FOLLOW US | LIKE US > >> > _______________________________________________ > >> > lldb-dev mailing list > >> > lldb-dev@lists.llvm.org > >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev > >> > >> > >> > >> > >> -- > >> Rex Fenley | IOS DEVELOPER > >> > >> > >> Remind.com | BLOG | FOLLOW US | LIKE US > >> > >> > >> > >> -- > >> Rex Fenley | IOS DEVELOPER > >> > >> > >> Remind.com | BLOG | FOLLOW US | LIKE US > >> _______________________________________________ > >> lldb-dev mailing list > >> lldb-dev@lists.llvm.org > >> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev > > > > > > > > > > -- > > Rex Fenley | IOS DEVELOPER > > > > > > Remind.com | BLOG | FOLLOW US | LIKE US > > > > > -- > Rex Fenley | IOS DEVELOPER > > > Remind.com | BLOG | FOLLOW US | LIKE US > > > > -- > Rex Fenley | IOS DEVELOPER > > > Remind.com | BLOG | FOLLOW US | LIKE US _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev