1

次のマッドフラップ出力を「復号化」する方法を誰かに説明してもらいたい:

mudflap violation 1 (check/write): time=1352235104.713060 ptr=0x61a000 size=20
pc=0x2b12e5f4 location=`connect.c:645:3 (connect_init)'
      [0x613d88]
Nearby object 1: checked region begins 252B after and ends 271B after
mudflap object 0x619f30: name=`malloc region'
bounds=[0x619f00,0x619f04] size=5 area=heap check=0r/0w liveness=0
alloc time=1352235104.712374 pc=0x2b12db34 thread=715976208
      /lib/libmudflapth.so.0(__mf_register+0x80) [0x2b12db34]
Nearby object 2: checked region begins 23121B after and ends 23140B after
mudflap dead object 0x6145d8: name=`calloc region'
bounds=[0x614550,0x6145af] size=96 area=heap-init check=0r/0w liveness=0
alloc time=1352235104.704859 pc=0x2b12db34 thread=715976208
      /lib/libmudflapth.so.0(__mf_register+0x80) [0x2b12db34]
dealloc time=1352235104.711583 pc=0x2b12d498 thread=715976208
number of nearby objects: 2

誰かがこの行ごとに説明してもらえますか? これは現時点ではあまり意味がありません:-/ ...

前もって感謝します!

4

1 に答える 1

0

最初の行は、最も重要なデータを提供します。

... connect.c:645:3 (connect_init)

connect.cfunction の 645 行目のソースを調べますconnect_init。ここでアクセス違反が発生します。これは問題のあるコードである必要はありませんが、悪いコードを探す良い出発点です。この関数がクリーンな場合は、呼び出しているコードとconnect_init、ポインターまたはヒープ領域がどこから来ているかを評価してみてください。

他の部分は、いくつかのヒープ オブジェクト (malloc 領域、calloc 領域) を識別しているようです。最初のものはまだ使用されており (割り当て時間のみ)、2 つ目は既にヒープに返されています (割り当て時間と解放時間)。

于 2012-11-06T21:27:49.230 に答える