Skip to content

How to check if someone reduce/breaks debug info for optimized code #2090

Description

@BrianBohe

After merging this PR, we will obtain some improvements debugging optimized code. It would be great to have checks we can run on every new PR to be sure no one breaks/downgrades this changes. I open this issue in order to debate about different ways of accomplishing this. Some ideas are listed below:

  1. Add more information to jit dump, indicating when a variable goes live/dead/spill/unspill and use a diff tool to compare this dump between two different versions.
    • It's on JIT code (easy to run).
    • No pdb is loaded so variable names have format "VXX" with XX an integer (V01, .. V04 ...)
  1. Consume Variable Live Range in diagnostic repo and offer allow windbg extensions to print variable location data with each respective name as interleaving is proposed on this issue.
    • Variable names are the ones they have on code so is easier to understand.
    • Each a PR open on runtime repo would need to run some diagnostic code on windbg and print it on a PR.
  1. Statistical analysis: adding to JIT dump an analysis about code coverage by VariableLiveRange per variable.
    • On jit side+ Need less check by eye of variable liveness/location changing examples on dumps
    • A threshold should be established to accept or reject a change

category:testing
theme:debug-info
skill-level:intermediate
cost:medium

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions