Untuk apa file PDB?
File PDB: Apa yang harus diketahui setiap pengembang
Contoh skenario PDB:
Apa itu file PDB?
Sebagian besar pengembang harus tahu bahwa file PDB digunakan untuk membantu debugging perangkat lunak. Tapi bagaimana tepatnya dia bekerja, kita mungkin tidak mengenalnya. Artikel ini menjelaskan penyimpanan dan konten file PDB. Ini juga menjelaskan bagaimana debugger menemukan file PDB yang sesuai dengan binay dan bagaimana debugger menemukan file kode sumber yang sesuai dengan binay. Artikel ini ditujukan untuk semua developer Native dan Managed.
Sebelum kita mulai, mari kita definisikan dua istilah: build pribadi, yang digunakan untuk menunjukkan build yang dihasilkan pada mesin pengembang sendiri; build publik, yang berarti build yang dihasilkan pada mesin build publik. private build relatif sederhana, karena PDB dan binay berada di tempat yang sama, dan biasanya masalah yang kita miliki adalah tentang public build.
Hal terpenting yang perlu diketahui semua pengembang adalah bahwa "file PDB sama pentingnya dengan kode sumber", yang tanpanya Anda bahkan tidak dapat men-debug. Untuk build publik, server simbol perlu menyimpan semua PDB, dan kemudian ketika pengguna melaporkan kesalahan, debugger dapat secara otomatis menemukan file PDB yang sesuai dalam binay, dan baik Visual Studio maupun Windbg mengetahui cara mengakses server simbol. Sebelum menyimpan PDB dan binay ke server simbol, Anda juga perlu mengindeks sumber eksekusi PDB, yaitu mengaitkan PDB dan sumber.
Bagian berikutnya mengasumsikan bahwa Server Simbol dan Pengindeksan Server Sumber sudah disiapkan. TFS2010 dapat dilakukan sesederhana pengindeksan sumber dan penyalinan server simbol untuk build baru.
2. Isi file PDB
Secara resmi memulai konten PDB, PDB bukanlah format file yang tersedia untuk umum, tetapi Microsoft menyediakan API untuk membantu mendapatkan data dari PDB.
PDB C++ Asli berisi informasi berikut: * alamat fungsi publik, pribadi dan statis; * Nama dan alamat variabel global; * Parameter dan nama variabel lokal dan offset pada tumpukan; * tipe definisi kelas, struktur dan data; * Data Penghilangan Penunjuk Bingkai untuk melintasi tumpukan asli pada x86; * Nama dan jumlah baris dalam file kode sumber;
.NET PDB hanya berisi 2 bagian informasi: * Nama file kode sumber dan jumlah baris; * dan nama variabel lokal; * Semua data lainnya sudah disertakan dalam . Metadata NET;
|