2013-08-16 15 views

Odpowiedz

10

.line n znaczniki służą do debugowania i śledzenia stosów. Gdy wyjątek nie zostanie przerwany lub trzeba będzie wstawić stos, numer linii zostanie pobrany z instrukcji .line. Jeśli tego nie ma, to w śladach stacktraces będzie brakować numerów linii.

+0

Czy mogę usunąć markery liniowe, gdy chcę rekompilować kody smali? –

+0

@ user2525702 Zgodnie z tym, co już powiedziałem, tak, ale debugowanie będzie trudniejsze. – hexafraction

+1

@ user2525702 '.line' jest linią w oryginalnym kodzie źródłowym Java, która tłumaczy się na następną część smali. Jeśli je usuniesz, prawdopodobnie nie dostaniesz ładnych tropów wyjątków, takich jak 'at com.foo.bar.Bar (Bar.java:85)' – zapl

0

Prawie wszystko w języku smali ma bezpośredni odpowiednik w formacie bajtów dalk lub dalx.

W szczególności dyrektywa .line odpowiada pozycjom pozycji emitowanych przez automat stanów, które definiuje pojęcie debug_info_item, jak określono w http://s.android.com/tech/dalvik/dex-format.html.