On Mon, Nov 30, 2015 at 5:42 PM, Greg Clayton <gclay...@apple.com> wrote:
> When we debug "a.out" again, we might have recompiled "liba.so", but not 
> "libb.so" and when we debug again, we don't need to reload the debug info for 
> "libb.so" if it hasn't changed, we just reload "liba.so" and its debug info. 
> When we rerun a target (run a.out again), we don't need to spend any time 
> reloading any shared libraries that haven't changed since they are still in 
> our global shared library cache. So to keep this global library cache clean, 
> we don't allow types from another shared library (libb.so) to be loaded into 
> another (liba.so), otherwise we wouldn't be able to reap the benefits of our 
> shared library cache as we would always need to reload debug info every time 
> we run.

Tangential: gdb starts up significantly faster than lldb. I wonder
what lldb is doing wrong.

Oh, this is if I use the lldb that Apple supplied. If I compile my own
lldb with llvm-release, clang-release, and lldb-release, it takes like
20x the time to start up: why is this? And if I use llvm-debug,
clang-debug, lldb-debug, the time it takes is completely unreasonable.

> LLDB currently recreates types in a clang::ASTContext and this imposes much 
> stricter rules on how we represent types which is one of the weaknesses of 
> the LLDB approach to type representation as the clang codebase often asserts 
> when it is not happy with how things are represented. This does payoff IMHO 
> in the complex expressions we can evaluate where we can use flow control, 
> define and use C++ lambdas, and write more than one statement when writing 
> expressions. But it is definitely a tradeoff. GDB has its own custom type 
> representation which can be better for dealing with the different kinds and 
> completeness of debug info, but I am comfortable with our approach.

Yeah, about that. I question the utility of evaluating crazy
expressions in lldb: I've not felt the need to do that even once, and
I suspect a large userbase is with me on this. What's important is
that lldb should _never_ fail to inspect a variable: isn't this the #1
job of the debugger?
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to