2

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

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

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

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

4

2 回答 2

3

终于知道是怎么回事了。Java 在垃圾收集期间使用 SIGSEGV,它被 gdb 拦截,导致明显的崩溃。为了解决这个问题,我添加handle SIGSEGV pass nostop到我的~/.gdbinit文件中。

于 2013-10-18T16:43:19.207 回答
0

您也可以在调用“运行”命令之前在 gdb 会话中使用这两个命令:

处理 SIGSEGV nostop

处理 SIGSEGV noprint

于 2013-10-30T19:07:41.063 回答