0

実行するいくつかのテストがあり、最後に Valgrind を実行して、ライブラリのメモリ使用量を確認します。Valgrind は一貫して次のことについて不平を言っています。

==27022== HEAP SUMMARY:
==27022==     in use at exit: 6,139 bytes in 3 blocks
==27022==   total heap usage: 609 allocs, 606 frees, 19,877,073 bytes allocated
==27022== 
==27022== 32 bytes in 1 blocks are still reachable in loss record 1 of 3
==27022==    at 0x4A08121: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27022==    by 0x3A1A60168F: _dlerror_run (in /usr/lib64/libdl-2.17.so)
==27022==    by 0x3A1A601197: dlsym (in /usr/lib64/libdl-2.17.so)
==27022==    by 0x3A9D8A796D: ??? (in /usr/lib64/nvidia/libGL.so.331.67)
==27022==    by 0x3A9DAE965F: ??? (in /usr/lib64/nvidia/libGL.so.331.67)
==27022==    by 0x3A9DB1CB1F: ???
==27022==    by 0x3A9D8CD36A: ??? (in /usr/lib64/nvidia/libGL.so.331.67)
==27022== 
==27022== 83 bytes in 1 blocks are still reachable in loss record 2 of 3
==27022==    at 0x4A06409: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27022==    by 0x3A1A2863F9: strdup (in /usr/lib64/libc-2.17.so)
==27022==    by 0x3A9D8A964E: ??? (in /usr/lib64/nvidia/libGL.so.331.67)
==27022==    by 0x6578652F32322F: ???
==27022== 
==27022== 6,024 bytes in 1 blocks are definitely lost in loss record 3 of 3
==27022==    at 0x4A08121: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27022==    by 0x3A9D8C032E: ??? (in /usr/lib64/nvidia/libGL.so.331.67)
==27022== 
==27022== LEAK SUMMARY:
==27022==    definitely lost: 6,024 bytes in 1 blocks
==27022==    indirectly lost: 0 bytes in 0 blocks
==27022==      possibly lost: 0 bytes in 0 blocks
==27022==    still reachable: 115 bytes in 2 blocks
==27022==         suppressed: 0 bytes in 0 blocks

これらは私のライブラリとは関係がないようです。これらの警告について心配する必要がありますか? それとも、これらのリークを抑制しようとする必要がありますか? Makefileからこれを行う最もクリーンな方法は何ですか?

4

1 に答える 1

1

それらを抑制すべきかどうかを判断するのは困難ですが、ライブラリがクリーンであることが確実な場合は、抑制ファイルを生成できます。

その後、「--suppressions」フラグを指定して Valgrind を呼び出すことができます。抑制ファイルの名前が suppfile の場合:

> valgrind --suppressions=suppfile ./program

Makefile から valgrind を実行している場合は、抑制フラグを valgrind コマンドに追加します。Makefile と同じディレクトリに、デフォルトのオプション ファイル".valgrindrc" を作成することもできます。このファイルに、必要な引数を入れます。

于 2014-10-15T12:28:12.200 に答える