Java Jni C调试器

 2023-01-20    255  

问题描述

是否有任何调试器可以帮助调试Java JNI程序以及C库?

我应该能够从Java的静态void main开始调试程序,然后继续调试并在本机C函数中放置断点,然后在控件从C转移到Java后继续在Java进行调试.

Java Jni C调试器

推荐答案

Java虚拟机调试器与本机代码调试器有很大不同.当前没有像一个和相同的调试器这样的成熟解决方案,可以从Java到本机代码和返回.虽然这是一个非常刺激的问题,使一些聪明的人试图开发这样的解决方案,但毫无疑问,涉及到不可能的问题.我个人以下面的方式进行:

  1. 以调试模式启动您的Java代码,并在您感兴趣的第一个本地呼叫中放置一个断点.您甚至可以实现静态的本机呼叫,这不会做任何重要的事情,但可以使您尽快断裂.
  2. 启动本地调试器. 给定两个先决条件,这绝对可以是Eclipse 的实例:您已经安装了CDT,并且您的本机代码以某种方式编译,即CDT了解调试信息.附加到运行Java代码的java(w.exe)进程.在本机代码中放一个断点.
  3. 每当您需要过渡JNI接口时,请尽可能(或需要)将断点靠近呼叫条目/退出.

其他推荐答案

我发现在Intellij Idea调试器中运行Java代码并设置一个非常早期的断点使人们可以将Clion的调试器附加到该过程(sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope之后).然后,每个IDE都会停止JVM并在JAVA或JNI本机代码中的各自的制动点上抬高其窗口,并检查对象在上下文停止的内存中.这可以提供相当流畅的体验.

以上所述是小编给大家介绍的Java Jni C调试器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26149.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。