Debug自定义的AbstractProcesson

在上一篇文章中了解了一下自定义AbstractProcessor来解析编译时期的注解,来生成一些代码。在开发过程中我能在解析注解逻辑的时候需要进行Debug跟踪。但是普通的Debug不会进去。所以本文介绍如何调试自己的AbstractProcessor.

  • 需要在自定义的AbstractProcessor设置断点,init()方法是入口。所以在此处设置断点。

  • 设置gradle daemon端口和JVM参数,在gradle.propertues加入


org.gradle.daemon=true //守护线程

org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005//设置端口
  • 在命令行中运行gradle daemon来启动守护线程。

gradlew --daemon
  • 在Android Studio建立Remote Debugger并运行它。

IP:localhost,端口:5005。一旦你完成并运行它,那它就会连接到daemon线程中了。如果端口被占用自己修改。

  • 最后gradle命令来运行构建。

gradlew assembleDebug
  • 现在就可以正常的按照流程进行调试了。

参考链接

调试自定义的 `ConsoleAppender` 可从以下几个方面入手: ### 日志输出内容检查 首先要确认自定义 `ConsoleAppender` 是否有日志输出,以及输出的内容是否符合预期。可在自定义 `ConsoleAppender` 的核心输出方法(如 `append` 方法)中添加一些简单的 `System.out.println` 语句,输出关键变量的值,以此初步判断日志处理流程是否正常。例如: ```java import org.apache.log4j.ConsoleAppender; import org.apache.log4j.spi.LoggingEvent; public class CustomConsoleAppender extends ConsoleAppender { @Override protected void append(LoggingEvent event) { System.out.println("Entering append method with event: " + event.getMessage()); // 这里可以添加自定义的日志处理逻辑 super.append(event); } } ``` ### 配置文件检查 检查配置文件中自定义 `ConsoleAppender` 的配置是否正确。以 log4j 为例,确保配置文件中正确指定了自定义 `ConsoleAppender` 的类名,并且相关的参数配置无误。示例配置如下: ```properties log4j.rootLogger=DEBUG, customConsole log4j.appender.customConsole=com.example.CustomConsoleAppender log4j.appender.customConsole.layout=org.apache.log4j.PatternLayout log4j.appender.customConsole.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` ### 异常捕获与处理 在自定义 `ConsoleAppender` 的代码中添加异常捕获和日志输出,以便在出现异常时能及时发现问题。例如: ```java import org.apache.log4j.ConsoleAppender; import org.apache.log4j.spi.LoggingEvent; public class CustomConsoleAppender extends ConsoleAppender { @Override protected void append(LoggingEvent event) { try { // 自定义的日志处理逻辑 super.append(event); } catch (Exception e) { System.err.println("Exception occurred in append method: " + e.getMessage()); e.printStackTrace(); } } } ``` ### 单元测试 编写单元测试来验证自定义 `ConsoleAppender` 的功能。使用 JUnit 等测试框架,模拟不同的日志事件,检查自定义 `ConsoleAppender` 的处理结果是否符合预期。示例代码如下: ```java import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.spi.LoggingEvent; import org.junit.Test; import static org.junit.Assert.assertTrue; public class CustomConsoleAppenderTest { @Test public void testAppend() { CustomConsoleAppender appender = new CustomConsoleAppender(); Logger logger = Logger.getLogger(CustomConsoleAppenderTest.class); logger.addAppender(appender); LoggingEvent event = new LoggingEvent( Logger.class.getName(), logger, Level.DEBUG, "Test log message", null ); appender.append(event); // 这里可以添加断言来验证处理结果 assertTrue(true); } } ``` ### 调试工具使用 利用 IDE 的调试工具,在自定义 `ConsoleAppender` 的关键代码处设置断点,逐步执行代码,观察变量的值和程序的执行流程,帮助定位问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值