在eclipse中更改调试视图的内容

nzo*_*xia 8 java eclipse eclipse-jdt

我正在编写一个java框架,对于一个类文件sample.class,它会生成一个代理文件sample_proxy.class.当调用sample.testMethod()时,它会占用sample_proxy.class.我已经制作了一个eclipse插件来使断点工作, 在此输入图像描述

如果我从Main.java开始,并在sample.testMethod()中创建一个断点,下面的堆栈看起来像:Main.main - > sample.proxy_method - > sample_proxy.testMethod.
有没有办法让代理显示如下:Main.main - > sample.testMethod?

Ken*_*but 0

你想做的事情是可能的,但有点复杂。首先,无法更改正在运行的程序的 StackTrace。所以这Thread.currentThread().getStackTrace()不是要走的路。

我正在编写一个java框架,对于一个类文件sample.class,它生成一个代理文件sample_proxy.class。

当您这样做时,您必须内联被调用的方法,而不是简单地调用它。这是ProGuard也使用的重要技术。您会发现它执行不同类型的内联。您最感兴趣的可能是“内联短方法”的功能。

我建议你从那里的代码中复制它。我的好起点是http://sourceforge.net/p/proguard/code/ci/default/tree/src/proguard/optimize/Optimizer.java#l156

但请注意,这需要有关 JVM 本身的基础知识,因此不会有一个简单的代码片段可以在您期望的上下文中执行您想要的操作。

我希望它有帮助。