Ton*_*ada 6 java debugging bytecode
我们已经在我们公司使用liquibase一段时间了,我们已经为数据库迁移设置了持续集成环境,这会在修补程序出错时破坏工作.
该CI环境的一个有趣的"特性"是破坏有"可能的罪魁祸首",因为所有补丁都需要有"作者",错误消息显示作者姓名.
如果你不知道liquibase是什么,那没关系,这不是重点.
问题的关键是:具有人连接到一个错误的名字才是真的好软件开发proccess:问题得到更快的方式解决.
所以我在想:Java堆栈跟踪是否可行?
我们可能有一个带有人名的堆栈跟踪以及下面的行号吗?
java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372:john)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121:mike)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232:bob)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173:bob)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87:bob)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862:john)
Run Code Online (Sandbox Code Playgroud)
必须从SCM系统中提取这种信息(比如对每个源文件执行"svn blame").
现在,忘记将编译时间浪费一分钟:这有可能吗?要向这样的类文件添加元数据?
通常这种功能可以在版本控制系统之上实现。您需要知道版本控制系统中文件的修订版本,然后您可以调用blame/annotate命令来获取有关谁更改了每一行的信息。您不需要将此信息存储到类文件中,只要您可以识别您部署的每个类的修订版本(例如,您只部署某些标记或标签)。
如果您不想在调查堆栈跟踪时进入版本控制,您可以将行注释信息存储到类文件中,例如在构建期间使用类后处理器,可以在类级别添加自定义注释(这是相对的)使用ASM实现很简单)。然后打印堆栈跟踪的记录器可以在运行时读取此注释,类似于显示 jar 版本。
归档时间: |
|
查看次数: |
894 次 |
最近记录: |