附加到java进程时挂起gdb

时间:2013-10-07 13:26:45

标签: java java-native-interface gdb

我正在尝试调试JNI代码。为此,我遵循将gdb附加到运行Java代码的java进程的想法。 问题是,当我这样做时,gdb在pthread_join() libjli.so内挂起,产生以下输出。

0x7fff59850000
0x00007ffa9fbb8218 in pthread_join ()
   from /lib/x86_64-linux-gnu/libpthread.so.0

然后我不能让我的Java代码处理请求(它是服务器)。

更新:它不在pthread_join()内,但在此之后,当我继续执行并向服务器发出请求时。它实际上使用libzmq.so进行通信。我不知道gdb是否会以某种方式干扰库。

2 个答案:

答案 0 :(得分:3)

终于找到了发生了什么。 Java在垃圾收集期间使用SIGSEGV,它被gdb截获,导致明显崩溃。为解决此问题,我将handle SIGSEGV pass nostop添加到了~/.gdbinit文件中。

答案 1 :(得分:0)

此外,您可以在调用“run”命令之前在gdb会话中使用这两个命令:

处理SIGSEGV nostop

处理SIGSEGV noprint