[lldb-dev] [RFC] Fast Conditional Breakpoints (FCB)
Ismail Bennani via lldb-dev
lldb-dev at lists.llvm.org
Thu Aug 15 14:03:30 PDT 2019
I built Clang (and LLVM) in Release Mode with Debug Info (-O2),
and got these results:
| Dwarf Occurences | Occurences |
|----------------------|-----------------|
| DW\_OP\_deref | 1,570 |
| DW\_OP\_const | 3,791 |
| DW\_OP\_addr | 9,528 |
| DW\_OP\_lit | 62,826 |
| DW\_OP\_fbreg | 205,382 |
| DW\_OP\_piece | 242,888 |
| DW\_OP\_stack\_value | 992,261 |
| DW\_OP\_breg | 1,006,070 |
| DW\_OP\_reg | 5,175,831 |
| **Total** | **7,700,147** |
I could technically implement the logic to support DW_OP_reg, DW_OP_breg
and DW_OP_stack_value fairly easily (which still represents 90% of all ops).
However, DW_OP_piece is a more complex operation since it combines
several other operations, and would require more work.
This would also imply that there will 2 DWARF Expression Interpreter in
LLDB, hence twice as much code to maintain … I’ll try to see if I can
use the existing interpreter for this feature.
Ismail
> On Aug 14, 2019, at 3:42 PM, Finkel, Hal J. <hfinkel at anl.gov> wrote:
>
>
> On 8/14/19 3:52 PM, Ismail Bennani via lldb-dev wrote:
>> Hi everyone,
>>
>> I’m Ismail, a compiler engineer intern at Apple. As a part of my internship,
>> I'm adding Fast Conditional Breakpoints to LLDB, using code patching.
>>
>> ...
>>
>> Since all the registers are already mapped to a structure, I should
>> be able to support more __DWARF Operations__ in the future.
>>
>> After collecting some metrics on the __Clang__ binary, built at __-O0__,
>> the debug info shows that __99%__ of the most used DWARF Operations are :
>>
>> |DWARF Operation| Occurrences |
>> |---------------|---------------------------|
>> |DW\_OP_fbreg | 2 114 612 |
>> |DW\_OP_reg | 820 548 |
>> |DW\_OP_constu | 267 450 |
>> |DW\_OP_addr | 17 370 |
>>
>> | __Top 4__ | __3 219 980 Occurrences__ |
>> |---------------|---------------------------|
>> | __Total__ | __3 236 859 Occurrences__ |
>>
>> Those 4 operations are the one that I'll support for now.
>> To support more complex expressions, we would need to JIT-compile
>> a DWARF expression interpreter.
>
>
> First, this all sounds really useful.
>
> Out of curiosity, how do these statistics change if you compile Clang
> with -O1? Many of my users need to debug slightly-optimized code.
>
> -Hal
>
>
> --
> Hal Finkel
> Lead, Compiler Technology and Programming Languages
> Leadership Computing Facility
> Argonne National Laboratory
>
More information about the lldb-dev
mailing list