尝试通过附加到插件进程来调试NPAPI插件似乎在10.11中不起作用。
用lldb附加显示:
sudo lldb -p 39337
(lldb) process attach --pid 39337
error: attach failed: unable to attach
这似乎影响用于嵌入式Webkit的“遗留”webkit(插件主机名为WebKitPluginHost
)和safari中使用的“现代”webkit(插件主机名为com.apple.WebKit.Plugin.64
)
我已在恢复模式下使用csrutil
禁用了“调试限制”,但在这种情况下似乎没有帮助。
答案 0 :(得分:0)
我没有在10.11中专门尝试过,但我发现最简单的方法是添加一个阻塞部分,等待你的插件在启动代码中调试:
#if WAIT_FOR_DEBUGGER
static bool beingDebugged() {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()}; size_t mib_size = 4;
struct kinfo_proc kp; size_t kp_size = sizeof(kp);
int result = sysctl(mib, mib_size, &kp, &kp_size, NULL, 0);
return (0 == result) ? (P_TRACED & kp.kp_proc.p_flag) : false;
}
#endif
然后在启动代码的某处:
#if WAIT_FOR_DEBUGGER
#warning "WILL BLOCK ON P_TRACED"
while (!beingDebugged())
sleep(1);
#endif
如果您无法找到正确的连接过程,您可以将PID输出到文件中,以便您可以阅读并找到它。