使用 gdbserver 从 clion 调试 jni 库
Debug jni library from clion using gdbserver
我想知道是否可以从 CLION 调试 jni 库
我的设置:
我的远程服务器带有 运行ning java 内部调用本机库的应用程序。
在服务器上,我启动了 gdbserver
实例附加到现有进程:
gdbserver --attach localhost:7777 pid
它成功连接到进程。
在本地机器上,我在 CLION 中创建远程调试配置,指定
目标远程农业:
tcp:host:7777
我还指定了符号文件和 sysroot。
因此,当我 运行 此配置成功连接到远程服务器时,但由于 SIGPIPE
和 SIGSEGV
信号,我不断地暂停程序,所以我永远不会到达真正的断点。 (我相信这些是 jvm 内部的信号)。
关闭异常断点没有帮助。
有没有办法调试这样的设置?
JVM 确实在后台大量使用信号。为了有效地调试它,您可能需要使用 handle
GDB 命令忽略这些信号。在CLion的GDB控制台中输入:
(gdb) handle SIGSEGV nostop noprint pass
这是一个很好的 answer 非常接近的问题。
我想知道是否可以从 CLION 调试 jni 库
我的设置:
我的远程服务器带有 运行ning java 内部调用本机库的应用程序。
在服务器上,我启动了 gdbserver
实例附加到现有进程:
gdbserver --attach localhost:7777 pid
它成功连接到进程。
在本地机器上,我在 CLION 中创建远程调试配置,指定 目标远程农业:
tcp:host:7777
我还指定了符号文件和 sysroot。
因此,当我 运行 此配置成功连接到远程服务器时,但由于 SIGPIPE
和 SIGSEGV
信号,我不断地暂停程序,所以我永远不会到达真正的断点。 (我相信这些是 jvm 内部的信号)。
关闭异常断点没有帮助。
有没有办法调试这样的设置?
JVM 确实在后台大量使用信号。为了有效地调试它,您可能需要使用 handle
GDB 命令忽略这些信号。在CLion的GDB控制台中输入:
(gdb) handle SIGSEGV nostop noprint pass
这是一个很好的 answer 非常接近的问题。