【问题标题】:YourKit Profiling and Line NumbersYourKit 分析和行号
【发布时间】:2015-01-18 15:12:22
【问题描述】:

我正在使用 YourKit Java 分析器来查找一些 Java 代码中的 CPU 占用点。我没有 Java 类的原始源代码,所以我一直在反编译它以查看需要修复的内容。

反编译代码上的行号(使用 JD-GUI,我还没有用其他任何东西测试过)与 YourKit profiler CPU 采样窗口中显示的行号一致。

是否有可用的反编译器将原始源文件行号与反编译代码匹配?

如下所示,EnergyNetwork.getAcceptors() 的输出行号是第 86 行。然而,在 JD-GUI 中,它显示第 86 行是一个列表。

【问题讨论】:

    标签: java profile decompiling line-numbers yourkit


    【解决方案1】:

    只要代码没有被混淆,我在 JD-GUI 中使用的(外部)代码得到了很好的结果。你试过最新版的 JD-GUI 吗? 只是一个想法:你得到的代码是不是很合适,可以再次编译?通过这种方式,您可能可以更好地控制代码到源的映射,最终无论如何这都是必要的,因为您想解决性能问题。

    【讨论】:

    • 我会测试并回复你
    • 去混淆对行号没有明显影响
    • 看起来代码没有被混淆。方法和变量的名称非常“漂亮”。只是一个疯狂的猜测:也许 Arrays.asList() 连同 getAcceptors() 所做的任何事情都是导致问题的原因?那么提到的行是正确的,分析器只显示周围方法的名称,因为他无法显示特定的代码行?
    • 也许您应该检查第 167 和 149 行的内容。它们是否包含方法名称或语句?
    • 我已经检查过了,第 149 行是 if 语句,第 167 行不可见(我猜是因为反编译器无法识别它是哪个行号)
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多