note_39:根据mapping看stackTrace

24 篇文章 0 订阅

根据mapping看stackTrace


对于混淆了的代码来说,stackTrace打印出来的一部分exception是加密的,例如在MainActivity.onShowDialog()这个方法里面出错,stackTrace里面可能会写MainActivity.a。然而mapping.txt里面通常会有不止一个a,而且打印出来的行数也不是原来代码里面的行数。所以直接看mapping的话会很麻烦。android sdk自带了一个混淆的工具proguardgui.bat可以解析stackTrace的内容。主要就是借助build完之后得到的mapping,然后将stackTrace里面诸如.a.b$a$b这种方法重新解析出来,换成具体的方法名如上面所说的onShowDialog()。不过也仅仅是解析方法名而已,不会替换行数。


具体操作如下

找到Android sdk安装的文件夹,进入路径sdk\tools\proguard\bin,此时会有三个.batproguard.batproguardgui.batretrace.bat
双击proguardgui.bat

此时如果出现闪退的话,极有可能是java的环境变量没有配对。
按下Win+R,输入cmd并打开,直接输入命令java。如果出现类似java不是内部命令这段话,那就是java环境变量有问题。最好去检查一下JAVA_HOMECLASSPATHPath。如果真的发现有问题,修改完之后最好重启,否则修改有可能会不生效。重启之后打开cmd并输入java,此时应该会出现一大版命令的注解。

打开proguardgui.bat,找到左边菜单最后一个选项RetraceBrowse对应的mapping.txtmapping.txt通常在包名\buid\outputs\mapping\里面。将打印出来的stackTrace中与stack trace无关的内容删去,例如,用adb logcat抓的日志就要把冒号及前面的标题删掉。
例如,有一段stack trace

E/AndroidRuntime( 7758): java.lang.IndexOutOfBoundsException: replace (-1 ... -1) starts before 0

E/AndroidRuntime( 7758): 	at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1023)

E/AndroidRuntime( 7758): 	at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:460)

E/AndroidRuntime( 7758): 	at android.text.SpannableStringBuilder.insert(SpannableStringBuilder.java:211)

要把前面的E/AndroidRuntime( 7758):删掉再粘贴,否则Retrace!无效。

粘贴到Obfuscated stack trace的输入框里面,点击右下角的Retrace!就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
def hpo_pipeline( *, # 1. Dataset dataset: Union[None, str, Type[DataSet]], dataset_kwargs: Optional[Mapping[str, Any]] = None, training_triples_factory: Optional[TriplesFactory] = None, testing_triples_factory: Optional[TriplesFactory] = None, validation_triples_factory: Optional[TriplesFactory] = None, # 2. Model model: Union[str, Type[Model]], model_kwargs: Optional[Mapping[str, Any]] = None, model_kwargs_ranges: Optional[Mapping[str, Any]] = None, # 3. Loss loss: Union[None, str, Type[Loss]] = None, loss_kwargs: Optional[Mapping[str, Any]] = None, loss_kwargs_ranges: Optional[Mapping[str, Any]] = None, # 4. Regularizer regularizer: Union[None, str, Type[Regularizer]] = None, regularizer_kwargs: Optional[Mapping[str, Any]] = None, regularizer_kwargs_ranges: Optional[Mapping[str, Any]] = None, # 5. Optimizer optimizer: Union[None, str, Type[Optimizer]] = None, optimizer_kwargs: Optional[Mapping[str, Any]] = None, optimizer_kwargs_ranges: Optional[Mapping[str, Any]] = None, # 6. Training Loop training_loop: Union[None, str, Type[TrainingLoop]] = None, negative_sampler: Union[None, str, Type[NegativeSampler]] = None, negative_sampler_kwargs: Optional[Mapping[str, Any]] = None, negative_sampler_kwargs_ranges: Optional[Mapping[str, Any]] = None, # 7. Training training_kwargs: Optional[Mapping[str, Any]] = None, training_kwargs_ranges: Optional[Mapping[str, Any]] = None, stopper: Union[None, str, Type[Stopper]] = None, stopper_kwargs: Optional[Mapping[str, Any]] = None, # 8. Evaluation evaluator: Union[None, str, Type[Evaluator]] = None, evaluator_kwargs: Optional[Mapping[str, Any]] = None, evaluation_kwargs: Optional[Mapping[str, Any]] = None, metric: Optional[str] = None,解释
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值