Hm, that's interesting.

I tried running a debug lldb on /bin/ls.  then I attached from another lldb.  I 
put a breakpoint on CommandObjectTargetModulesLookup::DoExecute and resumed 
execution.  In the debuggee lldb, I did

tar mod loo -a 0


and auto-repeated return so the same command would be executed over and over.

In the debugger lldb, I tried adding a command to the breakpoint,

br comm add 
p does_not_exist
DONE

and continuing - after a couple dozen times, I didn't see a slowdown.  I tried 
adding a breakpoint condition,

br mod -c 'doesNotExist == 1' 1

and continuing, and didn't see a slowdown after a few dozen repetitions.

I'm on macOS using .o file DWARF debugging.

I'm sure there's a bug here, but it may be more specific to the platform and 
type of debug info that you're using? It could be that lldb is too small of a 
project to repo this problem too.



> On Jul 4, 2019, at 11:38 AM, Guilherme Andrade via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> I have two breakpoint inside methods that are called every frame (C++ project 
> using Unreal), and every time one of them is reached, I evaluate one 
> expression (I'm being able to reproduce this using an undefined name, say 
> "undefinedVariable"). After a few iterations (usually tens), the time it 
> takes for LLDB to say that name doesn't exist increases, despite being the 
> same expression, at the same breakpoint and the call stack remaining 
> unchanged.
> 
> I've noticed that the number of lexical Decl queries and imports conducted by 
> Clang reported in 'Local metrics' increase.
> 
> They go from:
> Number of visible Decl queries by name     : 29
> Number of lexical Decl queries                    : 9
> Number of imports initiated by LLDB           : 15
> Number of imports conducted by Clang      : 827
> Number of Decls completed                        : 5
> Number of records laid out                          : 2 
> 
> To:
> Number of visible Decl queries by name     : 29
> Number of lexical Decl queries                    : 14
> Number of imports initiated by LLDB           : 15
> Number of imports conducted by Clang      : 1342
> Number of Decls completed                        : 5
> Number of records laid out                          : 2
> 
> Also, the number of SymbolFileDWARF operations in the logs jumps from 366 to 
> 406.
> 
> So, I've got two questions. 1) Is it safe to say that those extra imports and 
> Decl queries are responsible for the performance loss? 2) Why do they happen?
> 
> Thanks!
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to