【问题标题】:Debug obfuscated application with IntelliJ使用 IntelliJ 调试混淆的应用程序
【发布时间】:2021-03-14 14:22:12
【问题描述】:

我有多个模块的项目,每个模块由 API 和实现 jar 组成。我们使用 Proguard 来混淆这个 jars。现在我们想调试混淆的 jar 以找出应用程序的问题。基本上我们只会遇到一些奇怪的问题。

【问题讨论】:

    标签: java debugging intellij-idea proguard obfuscation


    【解决方案1】:

    我们可以通过以下步骤实现调试

    Proguard 设置

    • 在混淆过程中定义映射文件(-printmapping application.map)

    • 在混淆过程中保留 SourceFile 和 LineNumberTable 信息

      -renamesourcefileattribute SourceFile
      -keepattributes  SourceFile,LineNumberTable
      

    IntelliJ

    • 创建一个空的 Java 项目

    • 右键单击项目并打开模块设置-> 库

    • 将所有混淆的库 jar 添加到项目中

    • 从映射文件 (application.map) 中找出要放置断点的类名

    • 在 IntelliJ 中打开混淆类并添加断点

    • 创建一个新的远程调试配置

    • 使用调试参数启动应用程序

        "C:/Program Files 
        (x86)/Java/jre8/bin/java.exe"  - 
         agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
      
    • 应用程序在断点处停止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      相关资源
      最近更新 更多