我有一个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但无济于事。
答案 0 :(得分:1)
没有找到如何忽略SIGSEGV但是发现如何让JVM不要抛出SIGSEGV。 -Xint选项(仅限解释模式执行)将阻止抛出SIGSEGV。