1. 程式人生 > 其它 >如何在arm的機器上使用Address Sanitizer

如何在arm的機器上使用Address Sanitizer

技術標籤:備忘linuxubuntu

如何在arm的機器上使用Address Sanitizer

Address Sanitizer是一個很好的檢測記憶體地址錯誤的工具,在gcc中有內建的庫,只要開啟編譯引數就可以使用了,但是arm是沒有的。手動編譯過於麻煩,我們可以使用別人已經編好的庫

  1. 檢視程式是什麼指令集,用file命令是32位ARM EABI5,用gcc5編譯的

  2. 如果是arm32位,gcc5,可以下載libgcc-5-dev-armel-cross。(arm32有el和hf之分,可以查詢一下)

sudo apt-get update
sudo apt-get install libgcc-5-dev-armel-cross
cd
/usr/lib/gcc-cross/arm-linux-gnueabi/5/ find -name "*asan*"

在這裡插入圖片描述

  1. 然後將libasan.so, libasan.a, libasan-preinit.o 拷貝到你的編譯環境要連結的庫的目錄下就可以了
  2. 編譯和連結的引數都要加上-fsanitize=address,連結靜態庫還要都加上-static-libasan