0

valgrind ログを見たのはこれが初めてです。このログは他のユーザーによって提供されています (stlinux (sh4) がサポートされていないため、valgrind を実行できません)

valgrind ログを使用してメモリ リークを修正する方法を学習するために、専門家がいる場合は非常に高く評価されます。ベローの valgrind エラー ログの 1 行でも選択してください (そして、彼が修正しようとしている valgrind エラー行を教えてください (ソース コードのパッチ)

次に、valgrind ログからメモリ リークを修正する方法を学び、残りはすべて自分で修正します (修正例が必要なだけです)。

ここにアプリ trac ブラウザー (ソース コード) があります: http://www.streamboard.tv/oscam/browser/trunk/?rev=5375

専門家がこれらのログを見てくれれば非常にありがたいです (私は本当に助けが必要です)、ここに 4 つの valgrind ログがあります:

http://www.4shared.com/office/04seUumN/valgrind_2.html _ _

http://www.4shared.com/office/WYmfxICb/valgrindlog.html

http://www.4shared.com/office/WGwlKeUK/valgrind.html

http://www.4shared.com/office/mkX4FAzd/valgrind_1.html _ _

PS :

  1. 私は valgrind を自分で実行できないので、最大のメモリ損失 (リーク) を伴うメモリ リークを選択してください。その後、それらの改善を目で監視できます (トップ コマンド、ps -aux)。

  2. メモリリークの修正に関する私の懸念は、ほとんどがこれらのモジュールに限定されています (私にとって優先度 (重要性) はそれらの番号順です (つまり、module-datastruct-list.c によるメモリリークの修正は私にとって最優先事項です . ...)

    • module-datastruct-list.c
    • oscam-garbage.c
    • oscam.c
    • モジュール-cccam.c
    • モジュール-dvbapi.c

前もって感謝します

4

1 に答える 1

2

ずっと前に Valgrind を使っていたので、使い方はよく覚えていませんが、かなり簡単であることは知っています。Valgrind のログには、コードが原因であるだけでなく、ライブラリから呼び出したコードが原因である、プログラムのすべてのメモリ リークが表示されます。リークごとに、次のように関数呼び出しスタックが表示されます。

==5313== Invalid write of size 4
==5313==    at 0x8048A27: test_2() (valgrind-tests.cc:37)
==5313==    by 0x8048CDF: main (valgrind-tests.cc:134)
==5313==    by 0x215BBE: __libc_start_main (in /lib/libc-2.3.2.so)
==5313==    by 0x8048910: (within /home/newren/examples/valgrind-tests)
==5313==    Address 0x1B3E024 is 0 bytes inside a block of size 4 free'd
==5313==    at 0x5419C5: __builtin_delete (vg_replace_malloc.c:244)
==5313==    by 0x5419E3: operator delete(void*) (vg_replace_malloc.c:253)
==5313==    by 0x8048A20: test_2() (valgrind-tests.cc:36)
==5313==    by 0x8048CDF: main (valgrind-tests.cc:134)
==5313==    by 0x215BBE: __libc_start_main (in /lib/libc-2.3.2.so)
==5313==    by 0x8048910: (within /home/newren/examples/valgrind-tests)

これは、メモリに 4 バイトを書き込もうとしたが、これらのバイトにアクセスできないことを意味します。この問題は、この例では「valgrind-tests.cc」の 37 行目にあります。

valgrind の主な問題は、前述したように、使用するライブラリからのメモリ リークやメモリ警告 (忘れられたポインターなど) が表示されることです。ログをきれいにするために、「抑制ファイル」と呼ばれる valgrind ルール ファイルを作成できます。

詳細については、こちらこちらをご覧ください。

于 2012-10-17T12:39:44.430 に答える