Androidのメディアサーバーでメモリリークをデバッグする方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
メディアサーバーのメモリリークを確認します。 libc デバッグレベルを設定します。したがって、libc は割り当てられたすべてのメモリのトレースを記録します。 setprop libc.debug.malloc 1 libc デバッグを有効にするために mediaserver を強制終了します。Androidはメディアサーバーを再起動します。 busybox killall -HUPメディアサーバー 正しく設定すると、以下のログが表示されます。 I/libc ( 3074): /system/bin/mediaserver MALLOC_DEBUG = 1 を使用 (リークチェッカー) メディアサーバーの使用済みメモリをすべてダンプします。 dumpsys media.player -m 割り当て回数 297 合計メモリ 1483423 size 262144, dup 1, 0x401f4c18, 0x400b6152, 0x401a6568, 0x4061a95c, 0x40146cfa, 0x4019639c, 0x40146ec2, 0x4014a1ec, 0x4014a3ca, 0x00008a98, 0x400b67aa size 178192, dup 1, 0x401f4c18, 0x400b6152, 0x4280adae, 0x427ffcee, 0x4280ae6c, 0x427ec75a, 0x427f7e22, 0x42807648, 0x428082ea, 0x415144f0, 0x4151334a, 0x413381d0, 0x401dcbc, 0x401d438c, 0x4014d996, 0x405c3c46, 0x405c7516, 0x405c6ad4, 0x412c02ca, 0x412c0584, 0x4108c64c, 0x4107d622, 0x4107fbf2, 0x4107c19a, 0x400b2eac, 0x400b2a00 メモリ ダンプを 2 回 diff して、メモリ リークがあるかどうかを確認します。ダンプ間で 1 つのビデオ ファイルを再生できます。 差分1.txt 2.txt > diff.txt メディアサーバーのマップファイルを取得します。 mediaserver>/maps の adb pull proc/ 添付のスクリプトを使用して、トレースを関数シンボルとファイル行にマップします。 ./addr2func.py --root-dir=../../ --maps-file=./maps--product=sabresd_6dq diff.txt 注:デバッグにはeng buildを使用する必要があります。 日時:Androidのメディアサーバーでメモリリークをデバッグする方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
すごい!!
查看全文