Simbol
Simbol berguna untuk penelusuran kesalahan dan alat diagnostik lainnya. Konten file simbol bervariasi antara bahasa, kompilator, dan platform. Pada tingkat tinggi, simbol adalah pemetaan antara kode sumber dan biner yang diproduksi oleh pengkompilasi. Pemetaan ini digunakan oleh alat seperti Visual Studio dan Visual Studio Code untuk mengatasi informasi nomor baris sumber atau nama variabel lokal.
Dokumentasi Windows tentang simbol berisi informasi yang lebih rinci tentang simbol untuk Windows, meskipun banyak konsep juga berlaku untuk platform lain.
.NET Core memperkenalkan format file simbol baru (PDB) - PDB portabel. Tidak seperti PDB tradisional, yang hanya Windows, PDB portabel dapat dibuat dan dibaca di semua platform.
File PDB adalah file tambahan yang diproduksi oleh pengkompilasi untuk menyediakan alat lain, terutama debugger, informasi tentang apa yang ada dalam file utama yang dapat dieksekusi dan bagaimana itu diproduksi. Misalnya, debugger membaca PDB untuk memetakan foo.cs baris 12 ke lokasi yang dapat dieksekusi yang tepat sehingga dapat mengatur titik henti. Format Windows PDB telah ada sejak lama, dan berevolusi dari format simbol debugging asli lainnya yang bahkan lebih lama. Ini memulai hidupnya sebagai format untuk program asli (C/C++). Untuk rilis pertama .NET Framework, format Windows PDB diperluas untuk mendukung .NET.
Format PDB Portabel diperkenalkan dalam .NET Core, dan digunakan secara default saat menargetkan .NET. Saat menargetkan .NET Framework, Anda dapat mengaktifkan simbol PDB portabel dengan menentukan <DebugType>portable</DebugType>
dalam file proyek Anda. Format PDB portabel didasarkan pada format metadata ECMA-335. Untuk informasi selengkapnya, lihat PDB portabel v1.0: Spesifikasi Format. Alat diagnostik dapat menggunakan System.Reflection.Metadata pustaka untuk membaca file PDB portabel (misalnya, lihat System.Reflection.Metadata.Document).
PDB portabel maupun PDB Windows tidak didukung di mana-mana. Untuk memutuskan format mana yang akan digunakan, pertimbangkan di mana proyek Anda akan digunakan dan di-debug. Jika Anda memiliki proyek yang ingin digunakan dan di-debug dalam kedua format, Anda dapat menggunakan konfigurasi build yang berbeda dan membangun proyek dua kali untuk mendukung kedua jenis konsumen.
PDB portabel dapat dibaca pada sistem operasi apa pun dan merupakan format simbol yang direkomendasikan untuk kode terkelola. Namun, ada sejumlah alat dan aplikasi warisan di mana mereka tidak didukung:
Aplikasi yang menargetkan .NET Framework 4.7.1 atau yang lebih lama: mencetak jejak tumpukan dengan pemetaan kembali ke nomor baris (seperti di halaman kesalahan ASP.NET). Nama metode tidak terpengaruh, hanya nama file sumber dan nomor baris yang tidak didukung.
Saat Anda menggunakan dekomprelasi .NET seperti ildasm atau reflektor .NET, Anda tidak akan melihat pemetaan baris sumber atau nama parameter lokal.
Versi terbaru DIA dan alat yang menggunakan DIA untuk simbol baca, seperti WinDBG, mendukung PDB portabel, tetapi versi yang lebih lama tidak.
Mungkin ada versi profiler lama yang tidak mendukung PDB portabel.
Untuk menggunakan PDB portabel pada alat yang tidak mendukungnya, Anda dapat menggunakan Pdb2Pdb, yang mengonversi antara PDB portabel dan PDB Windows.
PDB Windows hanya dapat ditulis atau dibaca pada Windows. Menggunakan PDB Windows untuk kode terkelola sudah usang dan hanya diperlukan untuk alat warisan. Disarankan agar Anda menggunakan PDB portabel alih-alih PDB Windows, karena beberapa fitur kompiler yang lebih baru hanya diimplementasikan untuk PDB portabel.
- dotnet-symbol dapat digunakan untuk mengunduh file simbol untuk biner kerangka kerja
- Dokumentasi Windows pada simbol
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: