dotnet-gcdump should record symbol metadata for NativeAOT

Aperta
#6,052 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Ambito
tooling

Direzione di ricerca

Start in the dotnet-gcdump NativeAOT capture path and inspect how existing PDB data is recorded. Trace the platform-specific symbol metadata handling for Mach-O and ELF, then verify that the relevant executable identifiers are captured alongside the existing PE/PDB data.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

dotnet-gcdump newly supports capturing GC dumps from NativeAOT apps. Those apps don't include type names which have to be resolved from debug symbols by the viewer.

PerfView currently supports resolving Windows PDB symbols to some extent. I prototyped a Mach-O symbol resolution in dotnet-heapview (https://github.com/1hub/dotnet-heapview/pull/59).

The experience is, unforunately, quite limited since we need to match the correct symbols and we currently lack the data to do so.

Based on platfrom we linkely need to include:

  • Mach-O: Value of LC_UUID from executable linker section.
  • PE/PDB: Likely PDB GUID and age, from the PE’s CodeView RSDS record.
  • ELF: NT_GNU_BUILD_ID/.note.gnu.build-id. Possibly with fallback to .gnu_debuglink.

The current code likely already records the PDB data, so we are missing the Mach-O/ELF counterparts.

Lingua principale
C++
Stelle
1.3k
Fork
407
Merge medio
21h 5m
PR unite (30g)
78

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

  • Nessun Dockerfile né file Docker Compose
  • Nessun modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di dotnet/diagnostics

Tutte le issue di dotnet/diagnostics

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.