1. 程式人生 > >記憶體問題的排查工具和方法– Clang的AddressSanitizer

記憶體問題的排查工具和方法– Clang的AddressSanitizer

AddressSanitizer是clang中的一個記憶體錯誤檢測器,它可以檢測到以下問題:

  • Out-of-bounds accesses to heap, stack and globals
  • Use-after-free
  • Use-after-return (to some extent)
  • Double-free, invalid free
  • Memory leaks (experimental)

使用clang編譯程式碼時用-fsanitize=address就能開啟AddressSanitizer工具,為了在檢測到記憶體錯誤時打印出您的程式呼叫棧,需要在編譯時加上選項 -fno-omit-frame-pointer選項,同時為了得出更清晰的呼叫棧資訊,請用-O1選項編譯程式。