翻譯|使用教程|編輯:董玉霞|2022-06-23 10:44:15.343|閱讀 985 次
概述:本文主要介紹在 CLion中進(jìn)行動(dòng)態(tài)代碼分析時(shí)AddressSanitizer相關(guān)內(nèi)容 。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
本文主要介紹在 CLion中進(jìn)行動(dòng)態(tài)代碼分析時(shí)AddressSanitizer相關(guān)內(nèi)容 。
AddressSanitizer (ASan)是一種內(nèi)存損壞檢測(cè)器,能夠發(fā)現(xiàn)以下類(lèi)型的錯(cuò)誤:
ASan 詳細(xì)信息:FAQ、標(biāo)志列表、如何將 ASan 與 GDB 一起使用、關(guān)閉 ASan 檢測(cè)、ASan 算法、Clang 中的 ASan。
例如,考慮以下代碼片段:
int global_array[100] = {-1}; int main(int argc, char **argv) { return global_array[argc + 100]; // global buffer overflow }
當(dāng)使用標(biāo)志構(gòu)建時(shí),由于AddressSanitizer 檢測(cè)到全局緩沖區(qū)溢出-fsanitize=address -fno-omit-frame-pointer -O1,該程序?qū)⒁苑橇愦a退出:
請(qǐng)注意,ASan 在第一個(gè)檢測(cè)到的錯(cuò)誤時(shí)停止。要更改此行為并使 ASan 在報(bào)告第一個(gè)錯(cuò)誤后繼續(xù)運(yùn)行,請(qǐng)?zhí)砑拥?fsanitize-recover=address編譯器標(biāo)志和.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)
如果需要,調(diào)整ProgramFiles \(x86 \)} /Microsoft Visual Studio /2019 /Professional /VC /Tools /Llvm /x64 /lib /clang /10.0.0 /lib /windows路徑。此目錄包含 AddressSanitizer 所需的庫(kù)。
以上就是在 CLion中關(guān)于AddressSanitizer?的相關(guān)教程內(nèi)容,更多關(guān)于CLion使用教程的內(nèi)容可進(jìn)入官網(wǎng)查看。
CLion是一款專(zhuān)為開(kāi)發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。它是以IntelliJ為基礎(chǔ)設(shè)計(jì)的,包含了許多智能功能來(lái)提高開(kāi)發(fā)人員的生產(chǎn)力。
CLion技術(shù)交流QQ群:786598704 歡迎進(jìn)群一起討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn