gpt4 book ai didi

java - 使用 Java 类加载器获取堆栈跟踪

转载 作者:行者123 更新时间:2023-12-01 10:10:26 25 4
gpt4 key购买 nike

我正在尝试寻找一个简单问题的答案,但到目前为止还没有成功。

问题是:我可以使用java类加载器(实现一个新的类加载器)来调查堆栈跟踪吗?

更准确地说,

我正在谈论我正在对某些代码运行测试的场景,并且我想使用堆栈跟踪来确定哪个测试类运行此代码? (一种方法是查看堆栈跟踪中最接近的测试)

另一个先进的想法是使用类加载器来找到运行当前代码的最接近的“测试方法”..

编辑:

我无权访问运行代码的测试或代码本身..这就是我考虑类加载器的原因.. -> 我可以运行类加载器,但我无法更改应用程序代码或应用程序测试代码..(这就是为什么我不能使用 Thread.getStackTrace())。

最佳答案

要获取当前堆栈跟踪,您可以使用 Thread.getAllStackTraces()方法 - 它为您提供带有线程堆栈的 Map 对象。您可以通过 Thread.currentThread() 引用此 map 关键。

更新

如果您需要监视主机/测试应用程序外部的堆栈跟踪,您可以简单地使用jstack util 来找出哪个特定线程正在运行目标代码。

此外,您还可以使用字节码跟踪工具,例如 BTrace 。通过 BTrace,您可以使用其他方法跟踪方法调用。请看看这个tutorial 。我认为您会对描述 @OnMethod 注释的 @Location 参数用法的部分特别感兴趣。

关于java - 使用 Java 类加载器获取堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36149227/

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