我用Java编写了一款软件,通过使用硬件供应商提供的DLL与USB硬件通信。我使用Java Native Access库编写了对本地代码的包装器。有时候当我运行它,只有在本地代码相关的函数中,JVM会崩溃,而且我无法找到导致错误的原因,因为这发生在本地代码中,我没有源代码(MSVCRT71.DLL)。
我大部分时间都是Linux开发人员,所以对这种情况不太习惯。我该怎么做才能从外部(比如Visual C++)附加调试器到JVM进程,并从中获取有意义的信息(即不是汇编指令)?
我大部分时间都是Linux开发人员,所以对这种情况不太习惯。我该怎么做才能从外部(比如Visual C++)附加调试器到JVM进程,并从中获取有意义的信息(即不是汇编指令)?
MSVCRT71.DLL是Visual Studio 7.1中包含的C运行时库的dll。
安装Visual Studio 7.1,其中包含crt源代码。转到“调试”->“进程”,找到您正在运行的java实例,然后单击“附加”。
如果无法获取VS7,请尝试以下操作
[http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx][1]
确保获取该版本crt的符号。