2013-08-16 13 views

答えて

10

.line nマーカーは、デバッグおよびスタックトレースに使用されます。例外がキャッチされなかった場合、またはスタックトレースを入力する必要がある場合、行番号は.lineステートメントから取得されます。これが欠落していた場合、スタックトレースに行番号がありません。

+0

smaliコードを再コンパイルするときに、マーカーを削除できますか? –

+0

@ user2525702すでに述べた通り、はい、デバッグは難しくなります。 – hexafraction

+1

@ user2525702 '.line'はsmaliの次の部分に変換される元のJavaソースコードの行です。あなたがそれらを削除すると、 'com.foo.bar.Bar(Bar.java:85) 'のような素晴らしい例外スタックトレースが得られないでしょう。 – zapl

0

smali言語のほとんどすべてが、dalvikバイトコードまたはデックス形式の直接のアナログを持っています。

特に.lineディレクティブは、http://s.android.com/tech/dalvik/dex-format.htmlで指定されているように、debug_info_itemが定義するステートマシンによって発行される位置エントリに対応します。

関連する問題