[lldb-dev] [llvm-dev] Optimised-code debugging experience Round Table

Robinson, Paul via lldb-dev lldb-dev at lists.llvm.org
Wed Sep 23 07:20:49 PDT 2020

Hi Eric & Orlando,

It’s great to see interest in a lot of different aspects of debug info. At the same time, I’m concerned about a risk to making the topic so broad that we don’t have time to get through all the things people want to get through.  I’m thinking there’s a different way to slice the topics, hopefully without much overlap, but that will allow a bit more focus.  No doubt a lot of the same people would be interested in multiple slices, but by limiting the scope of each conversation I’m hoping we’ll get more accomplished.  I daresay a lot of people interested in debug-info quality in general might totally tune out a DWARF-nerd discussion 😊
The slicing could be something like this:

  1.  Getting LLVM to do a better job of tracking info internally, so what gets emitted in the end is more representative of the original program. This should improve the debugging experience by letting the debugger do a better job of mapping the executing program to the original source, because the data it works with is more accurate/complete.
     *   This is basically about IR/Metadata handling and representation, although it might leak into things like the “is_stmt” flag, and doing better with “prologue_end,” which are currently handled by AsmPrinter.
     *   Better handling of induction variables, entry-values, variables with multiple locations, etc.
  2.  Changes to optimization passes/pipelines and codegen, to avoid borking the source-location and value/variable tracking; again this should improve the debugging experience by letting the debugger do a better job of mapping the executing program back to the original source, because that mapping is simpler.
     *   This is basically about IR/MIR transforms, and is where an Og/O1 kind of topic would fit.
     *   Also things like extended lifetimes, limiting code motion/duplication, etc.
  3.  Changing the DWARF spec itself to improve the completeness and efficiency of the information it contains.  This should improve the debugging experience by making the DWARF itself a richer information source, to the extent that it can describe more of what happened to the original program; also hopefully any efficiency improvements will allow the debugger to be more responsive.
     *   This is obviously about DWARF itself, although to some extent how we go about generating it.
     *   Take better advantage of ranges and the .debug_addr table.  dblaikie and clayborg have put up ideas about this.
     *   Figure out a way to allow tracking multiple source locations for an individual instruction.  Right now we mostly give up and set locations to line-0 when this happens.
     *   Understand the competing needs of profiling and debugging consumers, and see what might be doable there.  (Although this might be tough enough to be its own topic.)
  4.  Debug-info testing/validation.  How do we decide what is “correct”?
     *   What are the tools we have, what are they good/bad at, what’s missing?

I hear that round-tables can be proposed for either ~half hour or ~full hour, so with more focused topics we might rather have shorter sessions?


From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of Eric Christopher via llvm-dev
Sent: Tuesday, September 22, 2020 2:42 PM
To: Cazalet-Hyams, Orlando <orlando.hyams at sony.com>; LLDB Dev <lldb-dev at lists.llvm.org>
Cc: llvm-dev at lists.llvm.org
Subject: Re: [llvm-dev] Optimised-code debugging experience Round Table

+LLDB Dev<mailto:lldb-dev at lists.llvm.org>

I'll sign up. :)

My particular interests are:

- Og (and O1 as Og)
- Correctness testing tools

Past that the rest of your list seems quite specific, but the overall "line tables" and "variable locations" are important.

Relatedly we have a number of DWARF committee members in llvm and another possible discussion area could be: "what extensions do debug info consumers think should happen to make dwarf a better input into debugging".



On Tue, Sep 22, 2020 at 8:43 AM Cazalet-Hyams, Orlando via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
Hi all,

I haven't seen a proposal for an optimised-code debugging experience Round Table yet so here goes!
Please let me know if you are interested by emailing me at:

    orlando.hyams at sony.com<mailto:orlando.hyams at sony.com>

Below is a non-exhaustive list of possible topics. Feel free to include any preferences and
suggestions in your response.

  a. Line tables:
    1. Can we fix is_stmt?
    2. Is prologue_end reliable?
    3. General stepping behaviour/quality.

  b. Variable locations:
    1. The state of DW_OP_entry_values in llvm.
    2. The state of the instruction-referencing DBG_VALUE work.
    3. The state of multi-register DWARF expressions in llvm.
    4. The possibility of salvaging out-of-liveness values using the 3 projects mentioned above.
    5. Floating point debug-info quality in llvm.
    6. Loop induction variable locations.

  c. Testing debug-info:
    1. Variable correctness testing tools.
    2. Location coverage testing tools.

  d. The state of -Og.

Please respond before Friday (25th) if you are interested as that is the submission deadline.

LLVM Developers mailing list
llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20200923/d9609c46/attachment-0001.html>

More information about the lldb-dev mailing list