我需要调试Java代码与某个本机dll的交互。我有一些调试.NET-本机交互在windbg + sosex中的经验。
但是,似乎没有任何windbg扩展可以向我展示Java调用堆栈。
此外,我也找不到jdk 6的任何调试版本。
我不是,非常想从源代码编译jdk 6(即使我知道如何编译)。
因此,我的问题是,您将如何调试或分析Java代码与某些本机DLL的交互?
发布于 2012-11-08 14:26:53
我使用jdb和windbg的组合完成了这一工作。在本机调用之前和之后用jdb在java中设置bp,并在本机函数开始时使用windbg设置bp。调试器既不知道另一个调试器,也不需要调试器。您将无法获得java字节码框架和本机框架的堆栈跟踪,但这并不重要,因为您可以在本机调用之前和之后查看java堆栈。
注意: jvm (至少1.5版本)在正常情况下使用异常,在本机调试器下运行时会非常痛苦。幸运的是,EIP对于所有用户来说都是相同的,所以您可以忽略使用以下内容:.if (@eip == <addr>) {gn}
https://stackoverflow.com/questions/13279144
复制相似问题