Bagikan melalui


Pemuatan Simbol

Handler simbol akan memuat simbol saat Anda memanggil fungsi SymInitialize dengan parameter fInvadeProcess diatur ke TRUE atau saat Anda memanggil fungsi SymLoadModuleEx untuk menentukan modul. Dalam kedua kasus, handler simbol memuat simbol atau menuangkan pemuatan simbol hingga simbol diminta, tergantung pada opsi yang diatur oleh fungsi SymSetOptions.

Handler simbol dapat digunakan untuk mengambil informasi simbolis untuk modul apa pun; tidak perlu dikaitkan dengan proses yang ditentukan dalam panggilan SymInitialize. Untuk menggunakan modul arbitrer, tentukan jalur lengkap ke gambar modul di parameter ImageName . Anda dapat menggunakan jalur ke modul yang dapat dieksekusi yang memiliki informasi penelusuran kesalahan (.exe, .dll, .drv, .sys, .scr, .cpl, atau .com). Gunakan parameter BaseOfDll untuk menentukan alamat beban apa pun, maka alamat simbol akan didasarkan dari alamat tersebut.

Mungkin tidak perlu menyimpan modul simbol yang dimuat melalui durasi aplikasi. Untuk merilis modul simbol dari daftar modul penangan simbol, gunakan fungsi SymUnloadModule64. Fungsi ini merilis memori yang dialokasikan untuk modul simbol. Untuk menggunakan simbol untuk modul tersebut lagi, Anda harus memanggil fungsi SymLoadModuleEx meskipun opsi beban simbol yang ditangguhkan diatur.

Mendiagnosis Masalah Beban Simbol

Untuk melihat semua upaya untuk memuat simbol, panggil SymSetOptions dengan SYMOPT_DEBUG. Hal ini menyebabkan DbgHelp memanggil fungsi OutputDebugString dengan informasi terperinci tentang pencarian simbol, seperti direktori yang dicari dan pesan kesalahan. Jika kode Anda menggunakan SymRegisterCallback64, DbgHelp akan memanggil fungsi panggilan balik Anda alih-alih memanggil OutputDebugString. Parameter ActionCode diatur ke CBA_DEBUG_INFO dan parameter CallbackData adalah string yang dapat ditampilkan.

Untuk mengaktifkan output debug ini ditampilkan ke konsol tanpa mengubah kode sumber Anda, atur variabel lingkungan DBGHELP_DBGOUT ke nilai non-NULL sebelum memanggil fungsi SymInitialize. Untuk mencatat informasi ke file, atur variabel lingkungan DBGHELP_LOG ke nama file log yang akan digunakan.

Perhatikan bahwa fitur-fitur ini harus digunakan hanya jika diperlukan. Mereka dapat memperlambat pemuatan simbol modul yang berisi banyak simbol.