gpt4 book ai didi

java - 调试 Java 原生交互

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:16 25 4
gpt4 key购买 nike

我需要调试 Java 代码与某个 native dll 的交互。我有一些在 Windbg + sosex 中调试 .NET 原生交互的经验。

但是,似乎不存在任何可以向我显示 Java 调用堆栈的 Windbg 扩展。

此外,我找不到 jdk 6 的任何调试版本。

我并不是那么迫切希望从源代码编译jdk 6(即使我知道如何编译)。

所以,我的问题是如何调试或分析 Java 代码与某些 native DLL 的交互?

最佳答案

我使用 jdb 和 Windbg 的组合来完成此操作。在 native 调用之前和之后使用 jdb 在 java 中设置 bp,并使用 Windbg 在 native 函数的开头设置 bp。两个调试器都不知道对方,也不需要知道对方。您将无法同时获得 Java 字节码帧和 native 帧的堆栈跟踪,但这没什么大不了的,因为您可以在 native 调用之前和之后查看 Java 堆栈。

注意:jvm(至少 1.5 版本)在正常情况下使用异常,这在 native 调试器下运行时是一个巨大的痛苦。幸运的是,EIP 对于所有这些都基本相同,因此您可以忽略使用类似以下内容: .if (@eip == <addr>) {gn}

关于java - 调试 Java 原生交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13279144/

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