【发布时间】:2015-02-13 17:45:32
【问题描述】:
我有一个 C++/JNI 程序,它可以很好地独立运行,但在使用 valgrind 运行时会使用 SIGSEGV 退出。 我已经验证了信号是从与在 gdb 调试器中运行程序时完全相同的位置抛出的。在 gdb 的上下文中,这个问题在这里得到了很好的解释: Strange sigsegv while calling java code from c++ through jni
解决方案是让 gdb/valgrind 忽略 SIGSEGV 信号。对于 gdb,这很容易。对于 valgrind - 到目前为止我一直没有成功。我试过http://sourceforge.net/p/valgrind/mailman/message/12485481/ 以及 --vex-iropt-register-updates=allregs-at-mem-access 但无济于事。
【问题讨论】:
-
没有找到如何忽略 SIGSEGV 回合找到了如何让 JVM 不抛出 SIGSEGV。 -Xint 选项,仅解释模式执行,将防止 SIGSEGV 被抛出。
-
谢谢!请将您的解决方案添加为自己的答案,并将您的问题标记为已解决。
标签: java-native-interface valgrind segmentation-fault