1

お互いに特別な使用法/利点はありますか (kmemleak と kmemcheck) ? これらのツールを Android オペレーティング システム (Linux OS ではない) で有効にすることはできますか?方法を教えてください。

参照: https://www.kernel.org/doc/Documentation/kmemcheck.txt https://www.kernel.org/doc/Documentation/kmemleak.txt

4

1 に答える 1

5

Kmemleak と Kmemcheck は異なるタスクを実行しますが、どちらも優れています。

1. Kmemleak は、一部のメモリ ブロックがカーネルによって割り当てられたが解放されていないかどうかをチェックします (つまり、カーネル内のメモリ リークをチェックするため、この名前が付けられました)。通常、パフォーマンスのオーバーヘッドは許容範囲内です。

2. Kmemcheck は、一部のカーネル コードが初期化されていないメモリにアクセスしているかどうかをチェックします。例: カーネル コードは構造体を割り当て、それに値を入力せず、その構造体から何かを読み取ります。Kmemcheck はそれを検出する必要があります。

ところで、Kmemcheck はメモリ リークをチェックしません。

Kmemcheck を使用すると、システムの速度が大幅に低下するため、グラフィカル環境が使用できなくなることがよくあります。ブート プロセスも非常に遅くなる可能性があります (失敗する可能性があります)。

3. 私が間違っていなければ、Kmemleak は少なくとも x86 と ARM で動作します。Kmemcheck は x86 のみです。

4. 残念ながら、Android で Kmemleak を有効にする方法はわかりません。デスクトップ Linux システムでのみ使用しました。

5. 達成しようとしていることに応じて、ニーズにより適したツールが存在する可能性があります。たとえば、Linux カーネルには、有効にして組み込むことができるさまざまなデバッグ機能があります。繰り返しますが、この点に関して、私は Android カーネルの経験がありません。

于 2013-12-26T06:17:47.163 に答える