翻譯|使用教程|編輯:董玉霞|2022-06-23 10:44:15.343|閱讀 985 次
概述:本文主要介紹在 CLion中進行動態代碼分析時AddressSanitizer相關內容 。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本文主要介紹在 CLion中進行動態代碼分析時AddressSanitizer相關內容 。
AddressSanitizer (ASan)是一種內存損壞檢測器,能夠發現以下類型的錯誤:
ASan 詳細信息:FAQ、標志列表、如何將 ASan 與 GDB 一起使用、關閉 ASan 檢測、ASan 算法、Clang 中的 ASan。
例如,考慮以下代碼片段:
int global_array[100] = {-1}; int main(int argc, char **argv) { return global_array[argc + 100]; // global buffer overflow }
當使用標志構建時,由于AddressSanitizer 檢測到全局緩沖區溢出-fsanitize=address -fno-omit-frame-pointer -O1,該程序將以非零代碼退出:
請注意,ASan 在第一個檢測到的錯誤時停止。要更改此行為并使 ASan 在報告第一個錯誤后繼續運行,請添加到-fsanitize-recover=address編譯器標志和.halt_on_error=falseASAN_OPTIONS。
在 Windows 上,您可以使用clang-cl編譯器在MSVC 工具鏈下使用 AddressSanitizer。
target_compile_options(exec PRIVATE -fsanitize=address) target_link_directories(exec PRIVATE "$ENV{ProgramFiles\(x86\)}/Microsoft Visual Studio/2019/Professional/VC/Tools/Llvm/x64/lib/clang/10.0.0/lib/windows") target_link_libraries(exec PRIVATE clang_rt.asan_dynamic-x86_64 clang_rt.asan_dynamic_runtime_thunk-x86_64) target_link_options(exec PRIVATE /wholearchive:clang_rt.asan_dynamic_runtime_thunk-x86_64.lib)
如果需要,調整ProgramFiles \(x86 \)} /Microsoft Visual Studio /2019 /Professional /VC /Tools /Llvm /x64 /lib /clang /10.0.0 /lib /windows路徑。此目錄包含 AddressSanitizer 所需的庫。
以上就是在 CLion中關于AddressSanitizer?的相關教程內容,更多關于CLion使用教程的內容可進入官網查看。
CLion是一款專為開發C及C++所設計的跨平臺IDE。它是以IntelliJ為基礎設計的,包含了許多智能功能來提高開發人員的生產力。
CLion技術交流QQ群:786598704 歡迎進群一起討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn