其實 valgrind 使用心得已經列在這裡:
http://buffon.pixnet.net/blog/post/30986643
但那篇又加了太多東西, 剛好最近又再另一個案子上使用,
想想, 還是再濃縮成一篇好了.
情境: 偵測某 library 是否有 memory leak
1. 先把該 library 的 source 搬到 Ubuntu
2. 新增一個 main.c, 使用該 library 的 API, 盡量涵蓋要偵測 memory leak 的 API
如果有 dlopen, 必須不做 dlclose, 否則 Valgrind 追不進去.
3. architecture:
TEST_X - doc : 說明文件
- include : header files
- lib : X.so
- log : 存放 valgrind 執行結果
- src : X 的 source code
- main.c : main.c ...
4. gcc main.c -ldl -pthread -lX -L./lib -I./include
5. 使用 Valgrind
ex:
valgrind --leak-check=full --log-file=abc --track-fds=yes --read-var-info=yes -v ./a.out 1800
./a.out 後面接的是要傳入 main.c 的參數, 在此為時間, 我打算讓它跑 1800 秒
留言列表