gpt4 book ai didi

safari - 如何让 XCode/GDB 融入 Safari 5.1 NPAPI 插件?

转载 作者:行者123 更新时间:2023-12-02 08:17:18 27 4
gpt4 key购买 nike

我有一个在 OS X 10.6.8 上运行的 NPAPI 插件,我想对其进行调试。当我使用 FireFox 3.6.19 加载它时,我可以将事件可执行文件设置为 FF,启动 FF,使用 XCode 附加,断点将在预期时间触发。

使用 Safari 5.1 时,我发现插件在进程中运行,因此我为/System/Library/PrivateFrameworks/WebKit2.framework/PluginProcess.app 创建并激活了客户可执行文件。然后,我启动 Safari,导航到托管插件的页面,附加到插件进程,然后使用 UI,这样断点应该触发,但它没有。我可以通过 UI 判断该插件已加载。如果暂停该过程,我会看到:

(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y <PENDING> "ADP_NPAPI_Interface.m":34
2 breakpoint keep y <PENDING> "ADP_NPAPI_Interface.m":34
3 breakpoint keep y <PENDING> "ADP_NPAPI_Interface.m":34
4 breakpoint keep y <PENDING> "plugin.cpp":244
5 breakpoint keep y <PENDING> "plugin.cpp":358
6 breakpoint keep y <PENDING> objc_exception_throw
(gdb) show directories
Source directories searched: $cdir:$cwd
(gdb) info sources
No symbol table is loaded. Use the "file" command.
(gdb) file sources
sources: No such file or directory
(gdb) info file
No registers.
No registers.
(gdb) show paths
Executable and object file path: /Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin

DEBUG_INFORMATION_FORMAT = dwarf-with-dsym。我的理解是符号将在插件中,所以,我相信 gdb 找不到我的源文件。

预先感谢您的帮助,戴夫

最佳答案

我偶尔使用过的一种方法 FireBreath插件是这样的:

#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

然后在入口点之一(例如 NP_Initialize)中执行以下操作:

#if WAIT_FOR_DEBUGGER
#warning "WILL BLOCK ON P_TRACED"
while (!beingDebugged())
sleep(1);
#endif

我的一个 friend 想出了这个,看起来效果不错。但是,您应该知道,在 Safari 5.1 中,浏览器将在(相当短的)一段时间没有收到插件响应后杀死该插件(发送 SIG_KILL)。因此,使用 Safari 5.1 进行调试几乎是不可能的;因此,我强烈建议您在 Firefox 或 Chrome 中进行调试。

这将导致插件等待调试器附加。请注意,在 Safari 5.1 中,插件进程的名称已更改;我忘记了它现在到底是什么,但它肯定已经不在进程中了,而且它不是 Safari =]

有一天我会抽出时间将其添加到默认的 FireBreath np_mainmain.cpp文件....

关于safari - 如何让 XCode/GDB 融入 Safari 5.1 NPAPI 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7287418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com