【问题标题】:throw exception when Java JNI experiences segmentation fault当 Java JNI 遇到分段错误时抛出异常
【发布时间】:2011-03-22 17:26:27
【问题描述】:

我们有代码在单独的线程中运行 JNI。我们在开发时偶尔会遇到分段错误,我们需要调试,但由于代码在单独的线程中运行,因此不会报告 seg-fault。相反,线程基本上在没有警告的情况下死亡,使调试变得困难。

我希望能够检测到分段错误和/或在发生段错误时抛出异常,以便我们有一些迹象表明线程在没有警告的情况下死亡。有没有办法以这种方式检测分段错误?

【问题讨论】:

    标签: java java-native-interface segmentation-fault


    【解决方案1】:

    在 Windows 上,使用 SetUnhandledExceptionFilter 或使用 __try __except 构造来捕获线程中的异常。在 POSIX 平台上,使用 sigactionSIGSEGV 安装处理程序

    【讨论】:

    • 然后在捕获它们后将它们扔给JVM。 jclass clazz = (*jenv)->FindClass(jenv, "java/lang/IllegalStateException"); (*jenv)->ThrowNew(jenv, clazz, "Caught seg fault");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    相关资源
    最近更新 更多