使用JNI调用的C ++程序无法在gdb中运行

时间:2014-12-16 09:53:51

标签: java-native-interface gdb

我写了一个C ++程序。它调用libhdfs提供的一些函数(用于C ++的HDFS API,用JNI实现),并且在正常执行时运行正常。当我使用gdb启动程序并输入run命令时。程序无法运行,我在gdb上下文中收到以下错误消息:

[Thread debugging using libthread_db enabled]
[New Thread 0x40100940 (LWP 18482)]
[New Thread 0x40201940 (LWP 18483)]
...
[New Thread 0x41514940 (LWP 18502)]

Program received signal SIGSEGV, Segmentation fault.
0x00002aaaac26c862 in ?? ()

我在gdb上下文中使用命令shell echo $CLASSPATH。它显示了正确的HDFS相关环境。

我使用Google和StackOverflow进行了搜索。但我没有任何想法。

任何提示?

1 个答案:

答案 0 :(得分:2)

Why does java app crash in gdb but runs normally in real life?提供了解决方案:

handle SIGSEGV nostop noprint pass

虽然,它并不那么优雅。