在Smali代码语法中,".line"是什么意思?(Android-Smali代码)

13

请看这个问题

反编译的smali代码包含类似.line 3.line 7的内容。

我无法理解.line应该是什么,请详细介绍其用法。

2个回答

24

.line n 标记用于调试和堆栈跟踪。当异常未被捕获或需要填充堆栈跟踪时,行号将从 .line 语句中提取。如果缺少此语句,则堆栈跟踪将缺少行号。


我可以在重新编译Smali代码时删除.line标记吗? - Behzad Gh
1
根据我之前所说的,是的,但调试会更困难。 - nanofarad
2
@user2525702 .line是原始Java源代码中对应于smali的部分。如果你将它们移除,可能就无法获得像at com.foo.bar.Bar(Bar.java:85)这样清晰的异常堆栈跟踪信息了。 - zapl
@user2525702 但是您为什么想要这样做呢?只需使用修改后的源代码重新编译即可。 - Simon
4
@Simon,当你检查闭源应用程序中可能存在的恶意代码时,这很有用。 - DevZer0
显示剩余3条评论

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接