调试通过JNI调用的本机代码(并防止JVM在遇到致命错误后中止程序)
Debugging a native code invoked through JNI (and preventing JVM from aborting the program after encountering a fatal error)
我有一个本地C++代码,它启动JVM并调用Java方法。其中一个Java方法调用本地代码,这些代码可能包含需要调试的错误。然而,每当通过JNI调用的本机代码(C和C++)引发致命错误(如访问冲突)时,JVM就会自动中止程序,同时它应该让调试器向我显示代码中有问题的部分和其他有用信息。我目前仅限于使用Visual Studio 2013学习版在Windows上进行开发,但也欢迎对其他开发环境提出建议。
确保在Structured Exception Handling
打开的情况下构建了JNI模块。
在Visual Studio IDE:中
Properties -> Configuration Properties -> C/C++ -> Code Generation -> Enable C++ Exceptions
确保选择了"Yes,with SEH"(是,带SEH)。这将允许您使用传统的try/catch
来处理异常,例如访问冲突。
相关文章:
- 编译包含字符串的代码时遇到问题
- 遇到新行时,有没有办法停止istream_iterator
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 在 for 循环中查找问题时遇到困难
- 创建结构的数组时遇到分段错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 为什么我遇到分段错误?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- 为什么我在尝试模板时遇到视觉工作室C++错误
- 如何从文本文件中读取数值,直到遇到字符类型?
- 从其他类访问类时遇到问题
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 打印问题.我在数组中打印值时遇到一些问题
- 使用静态成员声明类时遇到问题
- 创建 Spdlog 异步文件记录器时遇到困难
- C++ 填充数组时遇到问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 调试通过JNI调用的本机代码(并防止JVM在遇到致命错误后中止程序)