java - 附加到 Java 进程时 gdb 挂起

标签 java java-native-interface gdb

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

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

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

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

最佳答案

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

关于java - 附加到 Java 进程时 gdb 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19226153/

相关文章:

java - OAuth : Send Access Token and Get User data

java - 谷歌应用引擎 : Why are key-only datastore queries costing me 1 READ plus 1 SMALL?

java - 通过 JNI 访问 C 中的缓存

java - System.load 给出不满意的链接错误

c++ - 调试客户机器上生成的核心文件

C/汇编子程序段错误

c++ - <优化出来> 在 ubuntu 中的 gdb

java - 同一 WAR 中的多个 JAX-RS 应用程序

java - @XmlSeeAlso 替代方案

android - 使用 dlclose(Android NDK) 从应用程序中删除 native 库的实例