其實 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 秒

 

 

arrow
arrow
    全站熱搜

    kk 發表在 痞客邦 留言(0) 人氣()