有适用于 Mac OS 的 JDK 可以使用 LLDB 进行调试吗?

问题描述 投票:0回答:1

我目前正在尝试调试 Java 程序中的一个问题,该问题在某些时候跳转到 JNI 函数并且永远不会从中返回。因此,为了调试此 JNI 代码,我想附加 LLDB。问题是 Java 进程没有设置

com.apple.security.get-task-allow
权限,因此调试器无法附加到该进程。

显然一种可能的解决方案是在启动时禁用系统完整性保护。由于我在公司机器上工作,这对我来说是不可能的。

是否有一个 JDK 版本具有所需的权限集?

java macos lldb
1个回答
0
投票

我不知道是否有任何预编译的 JDK 二进制文件设置了

com.apple.security.get-task-allow
,但是如果您愿意从源代码编译二进制文件,则有一个配置选项来设置权利:
--with-macosx-codesign=debug
,它将尝试执行特别签署以添加特殊权利
com.apple.security.get-task-allow

您可以阅读如何编译您自己的 JDK:
这里:如何从源码编译JDK?在 stackoverflow.com
和此处 构建 JDK。在 openjdk.org

如果您愿意下载一堆 JDK,您可以使用

codesign -d --entitlements :- /path/to/jdk/bin/java
检查是否有
get-task-allow
权限,或者使用
codesign -dv --verbose=4 /path/to/jdk/bin/java
来查看是否
Signature=adhoc

© www.soinside.com 2019 - 2024. All rights reserved.