Bagikan melalui


Pustaka fungsionalitas yang diperluas Visual Studio AddressSanitizer (VCAsan)

VCAsan*.lib Pustaka menerapkan fitur IDE debugger yang diperluas di Visual Studio. Fitur-fitur ini memungkinkan IDE untuk menampilkan kesalahan AddressSanitizer dalam sesi debug langsung, atau offline dengan menyimpan file crash dump dengan metadata. Pustaka ditautkan kapan saja AddressSanitizer diaktifkan oleh pengkompilasi MSVC.

Inventaris pustaka VCAsan

Opsi runtime Pustaka tautan VCAsan
/MT libvcasan.lib
/MD vcasan.lib
/MTd libvcasand.lib
/MDd vcasand.lib

Fitur pustaka VCAsan

Jendela laporan kesalahan Rich AddressSanitizer di Visual Studio IDE

Pustaka VCAsan mendaftarkan panggilan balik dalam runtime AddressSanitizer dengan menggunakan fungsi __asan_set_error_report_callbackantarmuka . Jika laporan AddressSanitizer dibuat, panggilan balik ini akan digunakan untuk melemparkan pengecualian yang tertangkap oleh Visual Studio. Visual Studio menggunakan data pengecualian untuk menghasilkan pesan yang ditampilkan kepada pengguna di IDE.

Catatan

Pustaka VCAsan mendaftarkan fungsi panggilan balik dalam runtime AddressSanitizer. Jika kode Anda memanggil fungsi pendaftaran ini untuk kedua kalinya, kode tersebut menimpa pendaftaran panggilan balik pustaka VCAsan. Ini mengalihkan hilangnya semua integrasi Visual Studio IDE. Anda akan kembali ke pengalaman pengguna IDE default. Ada kemungkinan juga panggilan pengguna yang mendaftarkan panggilan balik mereka hilang. Jika Anda mengalami masalah, ajukan bug.

Simpan kesalahan AddressSanitizer dalam jenis file crash dump baru

Saat Anda menautkan pustaka VCAsan ke executable Anda, pengguna dapat mengaktifkannya untuk menghasilkan crash dump saat runtime. Kemudian runtime AddressSanitizer menghasilkan file cadangan ketika kesalahan yang didiagnosis terjadi. Untuk mengaktifkan fitur ini, pengguna mengatur ASAN_SAVE_DUMPS variabel lingkungan dengan menggunakan perintah seperti ini:

set ASAN_SAVE_DUMPS=MyFileName.dmp

File harus memiliki .dmp ekstensi untuk mengikuti konvensi Visual Studio IDE. (Sebelum 17.7)

Inilah yang terjadi ketika file cadangan ditentukan untuk ASAN_SAVE_DUMPS: Jika kesalahan tertangkap oleh runtime AddressSanitizer, file crash dump disimpan yang memiliki metadata yang terkait dengan kesalahan. Debugger di Visual Studio versi 16.9 dan yang lebih baru dapat mengurai metadata yang disimpan dalam file cadangan. Anda dapat mengatur ASAN_SAVE_DUMPS berdasarkan per pengujian, menyimpan artefak biner ini, lalu melihatnya di IDE dengan pengindeksan sumber yang tepat.

Visual Studio versi 17.7 dan yang lebih baru mendukung hal berikut:

  • String yang dikutip sekarang ditangani dengan benar. Di versi sebelumnya, untuk lingkungan di dalam Visual Studio atau saat menggunakan PowerShell, mengatur variabel lingkungan untuk berisi tanda kutip atau spasi akan gagal membuat file cadangan yang diharapkan.

  • .dmp Ketika ekstensi ditentukan secara eksplisit (misalnya, set ASAN_SAVE_DUMPS=MyDmp.dmp), VCAsan menggunakannya secara eksplisit, dan tidak akan menambahkan ID proses terkait ke nama file cadangan.

  • .dmp Jika file sudah ada dengan nama yang sama yang ditentukan dari variabel lingkungan, VCAsan memodifikasi nama file sebagai berikut:

    • Menambahkan angka ke nama file dalam tanda kurung. Contohnya,Myfile (1).dmp.
    • Jika setelah beberapa upaya menambahkan angka dalam tanda kurung gagal menghasilkan nama unik, file disimpan ke %APPLOCAL% jalur sementara yang akan dicetak VCAsan. Contohnya,C:\Users\~\AppData\Local\Temp\Dump.dmp.
    • Jika penyimpanan ke jalur sementara gagal, kesalahan diagnostik akan ditampilkan.

Lihat juga

Gambaran umum AddressSanitizer
Masalah yang diketahui AddressSanitizer
Referensi bahasa dan build AddressSanitizer
Referensi runtime AddressSanitizer
Byte bayangan AddressSanitizer
AddressSanitizer cloud atau pengujian terdistribusi
Contoh kesalahan AddressSanitizer