Visual Studio AddressSanitizer 擴充功能程式庫 (VCAsan)

VCAsan*.lib程式庫會在 Visual Studio 中執行擴充的偵錯工具 IDE 功能。 這些功能可讓 IDE 在即時的偵錯工具會話中顯示 AddressSanitizer 錯誤,或藉由儲存具有中繼資料的損毀傾印檔案來離線。 程式庫會在 MSVC 編譯器啟用 AddressSanitizer 時連結。

VCAsan 程式庫清查

Runtime 選項 VCAsan 程式庫
/MT libvcasan.lib
/MD vcasan.lib
/MTd libvcasand.lib
/MDd vcasand.lib

VCAsan 程式庫功能

Visual Studio IDE 中的 [豐富 AddressSanitizer 錯誤報表] 視窗

VCAsan 程式庫會使用介面 __asan_set_error_report_callback 函式,在 AddressSanitizer 執行時間內註冊回呼。 如果產生 AddressSanitizer 報表,則會使用此回呼來擲回 Visual Studio 所攔截的例外狀況。 Visual Studio 會使用例外狀況資料來產生在 IDE 中向使用者顯示的訊息。

注意

VCAsan 程式庫會在 AddressSanitizer 執行時間中註冊回呼函數。 如果您的程式碼第二次呼叫此註冊函式,它會覆寫 VCAsan 程式庫回呼註冊。 這會導致所有 Visual Studio IDE 整合都遺失。 您會還原回預設的 IDE 使用者體驗。 註冊回呼的使用者也可能會遺失。 如果您遇到任何問題,請提出 錯誤

將 AddressSanitizer 錯誤儲存在新類型的損毀傾印檔案中

當您將 VCAsan 程式庫連結到可執行檔時,使用者可以讓它在執行時間產生損毀傾印。 然後,AddressSanitizer 執行時間會在診斷錯誤發生時產生傾印檔案。 若要啟用這項功能,使用者可以使用下列命令來設定 ASAN_SAVE_DUMPS 環境變數:

set ASAN_SAVE_DUMPS=MyFileName.dmp

檔案必須具有 dmp 尾碼,才能遵循 Visual Studio IDE 慣例。

以下是指定 ASAN_SAVE_DUMPS 傾印檔案時所發生的情況:如果 AddressSanitizer 執行時間攔截到錯誤,則會儲存損毀傾印檔案,其中包含與錯誤相關聯的中繼資料。 Visual Studio 16.9 版和更新版本中的偵錯工具可以剖析儲存在傾印檔案中的中繼資料。 您可以針對每個測試進行設定 ASAN_SAVE_DUMPS 、儲存這些二進位成品,然後在 IDE 中使用適當的來源索引來加以查看。

另請參閱

AddressSanitizer 總覽
AddressSanitizer 已知問題
AddressSanitizer 組建和語言參考
AddressSanitizer 執行時間參考
AddressSanitizer 陰影位元組
AddressSanitizer 雲端或分散式測試
AddressSanitizer 錯誤範例