是否有任何调试器可以帮助调试Java JNI程序和C库?
我应该能够从Java中的static void main开始调试程序,并继续调试并在本机c函数中放置断点,然后在将控件从C传输到Java之后继续在Java中调试。
答案 0 :(得分:4)
Java虚拟机调试器与本机代码调试器非常不同。目前没有这样的MATURE解决方案作为同一个调试器,它能够无缝地从Java步进到本机代码并返回。虽然这是一个非常刺激性的问题,这使得一些聪明的人试图开发这样的解决方案,但毫无疑问涉及到许多不可想象的问题。我个人是这样做的:
java(w.exe)
进程。在本机代码中添加断点。答案 1 :(得分:0)
我发现,在IntelliJ IDEA调试器中运行Java代码并设置一个非常早的断点可以使CLion的调试器连接到进程(在sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope
之后)。然后,每个IDE都将停止JVM,并在Java或JNI本机代码中的相应制动点处升高其窗口,并检查在上下文已停止的内存中的对象。这使得体验相当流畅。