Cloud AddressSanitizer atau pengujian terdistribusi

Anda tidak perlu men-debug kesalahan AddressSanitizer kapan dan di mana kesalahan tersebut terjadi. Konfigurasikan runtime untuk membuat crash dump yang menyimpan semua konteks khusus AddressSanitizer saat kesalahan terjadi. Kemudian kirim crash dump tersebut ke PC lain untuk penelusuran kesalahan. Penelusuran kesalahan offline dapat menjadi timesaver penting saat menjalankan AddressSanitizer di cloud atau dalam pengujian terdistribusi. Anda dapat membuat cadangan pada infrastruktur pengujian atau produksi tempat kegagalan terjadi, dan men-debugnya nanti di PC pengembang Anda.

Debugger Visual Studio memberikan kesalahan AddressSanitizer yang didiagnosis dengan tepat. Anda dapat melihat bug ini tanpa harus menjalankan ulang pengujian, menyalin himpunan data besar, menemukan data yang hilang, atau menemukan mesin pengujian yang offline. Anda hanya perlu memuat crash dump.

Crash dump dibuat setelah kegagalan AddressSanitizer dengan mengatur variabel lingkungan berikut:

set ASAN_SAVE_DUMPS=MyFileName.dmp

Catatan

Nama file harus memiliki akhiran .dmp untuk mengikuti konvensi penamaan Visual Studio.

File cadangan ini dapat ditampilkan dengan menggunakan Visual Studio di kemudian hari di komputer lain.

Visual Studio dapat menampilkan informasi kesalahan dalam konteks kode sumber asli. Untuk melakukannya, Visual Studio memerlukan simbol penelusuran kesalahan dan kode sumber terindeks. Untuk pengalaman debugging terbaik, EXE, PDB, dan kode sumber yang digunakan untuk menghasilkan biner tersebut harus cocok.

Untuk informasi selengkapnya tentang menyimpan sumber dan simbol, lihat bagian sumber dan simbol . Untuk informasi tentang detail implementasi dan kontrol mendetail, lihat integrasi debugger.

Contoh - membangun, menguji, dan menganalisis

Pertimbangkan tiga mesin: A, B, dan C. Build dilakukan pada mesin B, pengujian dijalankan pada mesin C, dan Anda menganalisis kegagalan pada mesin A. Kesalahan dilaporkan terhadap baris sumber dan nomor kolom dalam kode sumber Anda. Anda dapat melihat tumpukan panggilan bersama dengan sekumpulan simbol dalam file PDB yang diproduksi menggunakan versi kode sumber yang tepat.

Langkah-langkah berikut adalah untuk skenario lokal atau terdistribusi yang mengarah pada pembuatan file .dmp, dan untuk melihat file cadangan AddressSanitizer secara offline.

Menghasilkan .dmp secara lokal

  • Bangun
  • Menguji executable
  • Menyalin file .dmp yang dihasilkan ke direktori build
  • Buka file .dmp dengan .pdb yang dipasangkan, di direktori yang sama

Menghasilkan .dmp pada sistem terdistribusi

  • Membangun dan pasca-proses PDB untuk blok data pengindeksan sumber
  • Salin pasangan atom (.exe, .pdb) ke mesin uji dan jalankan pengujian
  • Tulis pasangan atom (.pdb, .dmp) ke database pelaporan bug
  • Visual Studio membuka file .dmp dengan .pdb yang dipasangkan, di direktori yang sama

Catatan

Komputer Visual Studio 2019 yang Anda gunakan untuk analisis harus memiliki akses ke GitHub atau internal \\Machine\share tempat sumber terindeks Anda disimpan.

Lihat file AddressSanitizer .dmp

  1. Pastikan IDE debugger dapat menemukan file PDB dan sumber Anda.

  2. Buka Visual Studio dan pilih Lanjutkan tanpa kode. Lalu pilih File>Buka>File untuk membuka dialog Buka File. Pastikan akhiran nama file adalah .dmp.

    Screenshot of the File Open File menu in Visual Studio.

    Layar yang ditampilkan di sini membutuhkan satu langkah lagi untuk mengaktifkan akses IDE ke simbol dan sumber.

  3. Atur jalur simbol, lalu pilih Debug dengan Hanya Asli.

    Screenshot of the Minidump Summary display in Visual Studio.

Cuplikan layar ini menunjukkan file cadangan yang dimuat akhir, dengan sumber dan metadata AddressSanitizer dimuat.

Screenshot of the debugger showing source files and AddressSanitizer metadata.

Sumber dan simbol

Server sumber memungkinkan klien mengambil versi file sumber yang tepat yang digunakan untuk membangun aplikasi. Kode sumber untuk executable atau DLL dapat berubah dari waktu ke waktu, dan antar versi. Anda dapat menggunakannya untuk melihat kode sumber yang sama yang membangun versi aplikasi tertentu.

Saat men-debug EXE dengan file PDB-nya, debugger dapat menggunakan blok data server sumber yang disematkan untuk mengambil file yang sesuai dari kontrol sumber. Ini memuat file yang memetakan ke nama yang sepenuhnya memenuhi syarat yang dimasukkan ke dalam PDB secara otomatis oleh /Zi opsi pengkompilasi.

Untuk menggunakan server sumber, aplikasi harus "diindeks sumber" dengan menggunakan pdbstr.exe untuk menulis srcsrv blok data ke file PDB Anda. Untuk informasi selengkapnya, lihat bagian Blok Data server sumber dan pengindeksan sumber. Anda akan menemukan langkah-langkah untuk mengindeks sumber dan menerbitkan simbol dan cara menentukan simbol dan kode sumber untuk debugger juga berguna.

Untuk dokumentasi eksternal, lihat:

Baca juga

Gambaran umum AddressSanitizer
Masalah yang diketahui AddressSanitizer
Referensi bahasa dan build AddressSanitizer
Referensi runtime AddressSanitizer
Byte bayangan AddressSanitizer
Integrasi debugger AddressSanitizer
Contoh kesalahan AddressSanitizer