私は次のパラメータを使用してValgrindを実行します。メモリリークでValgrindから完全なコールスタックを取得するには?
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
ログ、私がメインまでトレースフルスタックといくつかのエラーメッセージを参照して、いくつかのメッセージは、次のようになります。
==3956== 1,999,140 (68,796 direct, 1,930,344 indirect) bytes in 5,733 blocks are definitely lost in loss record 8,842 of 8,845
==3956== at 0x4022AB8: malloc (vg_replace_malloc.c:207)
==3956==
方法をこれらのエラーの完全なスタックトレースを取得できますか?
Valgrindの最後にリリースされたバージョンでは、--num-callersが50までしかサポートされていないため、使用しているバージョンが明確ではありません。上記のスタックトレースは不完全なようです。これは、アプリケーションのコンパイル方法にリンクされている可能性があります(たとえば、-fomit-frame-pointerオプションを指定すると、スタックトレースを生成しにくくなる可能性があります)。 – phd
バンプ。 (stackoverflow "bump" posts?)同じ問題。 -gを使ってアプリケーションをコンパイルする。 malloc()、malloc()、main()の関数は、main()と同じファイル内の関数を含め、すべてをスキップします。 ??私はこの3スタックフレームの制限を持っていないオンラインの例を参照してください.. ??何か案は? – Samuel
私はUbuntu 13.10でvalgrind 3.8.1を使用しており、すべての中間コールを含まないスタックトレースを参照しています。 gccでコンパイル中の最適化がありません(または、おそらく-Ogなどが必要です) – thoni56