【问题标题】:change the content of debug view in eclipse更改 Eclipse 中调试视图的内容
【发布时间】:2015-10-08 16:16:42
【问题描述】:

我正在编写一个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?

【问题讨论】:

  • 您可以将样本作为抽象类,那么它不应该显示代理..

标签: java eclipse eclipse-jdt


【解决方案1】:

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

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

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

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

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

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2021-03-31
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2013-06-13
    相关资源
    最近更新 更多