AddressSanitizer 是一個快速的內存錯誤檢測工具,它由一個編譯時插樁模塊和一個運行庫組成。該工具可以檢測以下類型的錯誤:
- 堆、棧和全局變量的越界
- UAF
- Use-After-Return(runtime flag ASAN_OPTIONS=detect_stack_use_after_return=1)
- Use-After-Scope(clang flag -fsanitize-address-use-after-scope)
- Doube-Free
- Memory Leaks
AddressSanitizer會降低程序性能大於兩倍(相比之前內存檢查工具已經有了很大提升)
原理
https://blog.csdn.net/pang241/article/details/76137969
https://github.com/google/sanitizers/wiki/AddressSanitizerAlgorithm