gpt4 book ai didi

java - 重复堆栈跟踪

转载 作者:行者123 更新时间:2023-11-30 08:28:46 28 4
gpt4 key购买 nike

我想在这里做一些事情:http://statistics.netbeans.org/analytics/detail.do?id=204003对于我的申请

netbeans 团队自动知道他们收到的报告是新错误还是重复错误。

假设我有如下异常。

Caused by: javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3894)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3794)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3596)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1379)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:205)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:83)
at com.sun.proxy.$Proxy99.getProjectsBySearchCriteria(Unknown Source)
^
here is $Proxy99 I told about

at my.project.crm.web.controllers.contacts.ContactDetailsController.updateUndeletedProjectCollection(ContactDetailsController.java:2666)
at my.project.crm.web.controllers.contacts.ContactDetailsController.init(ContactDetailsController.java:489)
... 83 more
Caused by: java.lang.NullPointerException
at my.project.utils.security.UserRights.(UserRights.java:182)
at my.project.utils.security.AbstractSecurity.(AbstractSecurity.java:26)
at my.project.utils.security.ProjectSecurity.(ProjectSecurity.java:138)
at my.project.crm.enterprise.facades.projects.ProjectFacadeImpl.getProjectsBySearchCriteria(ProjectFacadeImpl.java:637)
at sun.reflect.GeneratedMethodAccessor6373.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:197)
... 87 more

我想我可以通过以下几个步骤制作某种签名:

  • 删除不以at开头的行
  • 删除行号(这样我的应用程序的不同版本就不会成为问题)
  • 在更复杂的情况下(依赖注入(inject))将一些奇怪的名称如 $Proxy99 更改为一些标准名称
  • 从结果中生成一些 md5

这样我就可以在我的应用程序中得到某种错误的签名

有没有更简单的方法呢?

最佳答案

我不知道这个问题是否只有一个正确答案,但这里有一些关于你的观点的想法:

  • 不要删除任何行。一切都可能很重要
  • 不要删除行号,即使是为了进行相等性检查。如果您想处理不同的版本,请将实际版本添加到您的报告中并手动整理重复项。您可以使用没有行号的版本来检测可能的重复项,但我总是会手动检查它。
  • 如果您想以编程方式比较堆栈跟踪,那么这些代理名称可能会成为问题。重命名它们将是一个解决方案,但请注意,具有相同 ID 的两个代理在重命名后仍需要具有相同的名称。它需要一个复杂的解析器才能做到这一点。
  • 始终比较整个堆栈跟踪,而不仅仅是哈希值。哈希值不是无冲突的。尽管碰撞不太可能发生,但您仍可能将两个不同的堆栈跟踪误解为相同。如果您担心性能:在这种情况下,这应该不是问题。

最后我要说的是看一下 ThrowableException 的 Java API,特别是 getStackTrace() .我自己并不喜欢它,但也许您可以使用它来编辑和比较您的堆栈跟踪,而无需执行复杂的字符串魔术。

关于java - 重复堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20002767/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com