firefox调试记录6——Firefox主窗口创建过程研究

到此为止,可以说已经到了firefox比较关键的地方了,其打开过程弄得比较清楚了,现在先来理清楚firefox是如何创建浏览器窗口,并最终展示在用户面前。这里先分析一下AppShell->Run()开始调用到消息循环开始这个过程。
当程序运行到~\firefox-8.0.source\toolkit\components\startup\nsAppRunner.cpp第35444行(在函数XRE_main里面)调用appStartup->Run()的时候,单步跟踪进去,发现该函数首先对环境进行了一下判断(如,有没有打开的firefox窗口,或者打开的窗口已经调用了推出函数),然后直接调用函数mAppShell->Run(),跟进这个函数。
函数mAppShell->Run()首先调用了mozilla::widget::StartAudioSession();函数,然后直接调用nsBaseAppShell::Run()。StartAudioSession()的功能是启用音频会话,跟进nsBaseAppShell::Run()函数。
该函数首先获取当前进程*thread = NS_GetCurrentThread();然后调用MessageLoop::current()->Run();,跟进这个函数。
MessageLoop::current()->Run()函数只有两句话:AutoRunState save_state(this);(保存当前状态)和RunHandler();(运行消息处理器),跟进RunHandler()。
RunHandler()就在Run()函数后面,直接调用其下面的函数RunInternal();
RunInternal()直接调用pump_->Run(this); pump_是一个MessagePump类的对象,其Run函数中有一个for循环,就是前面提到的消息处理循环。

上面这个过程的调用堆栈截图如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用Firefox Developer Edition调试火狐浏览器插件并观察其运行情况,请按照以下步骤操作: 1. 下载和安装Firefox Developer Edition浏览器,并启动。 2. 在Firefox Developer Edition浏览器中打开要调试的插件。 3. 在Firefox Developer Edition浏览器中,打开“Developer Tools”面板。这可以通过点击菜单栏中的“菜单”按钮,然后选择“Web开发”>“开发工具”来实现。或者,您也可以使用快捷键“Ctrl + Shift + I”(Windows和Linux)或“Cmd + Option + I”(Mac)来打开开发工具。 4. 在“Developer Tools”面板中,点击“Debugger”选项卡。在这里,您将看到一些调试工具,比如断点、变量观察器、调用堆栈等。 5. 在“Debugger”选项卡中,可以使用“Source Mapping”功能将插件代码映射到实际的源代码文件。这可以让您更方便地在插件代码中设置断点,并将调试器与浏览器中运行的实际代码联系起来。 6.设置断点: 单击文件名右侧的行号,就能够在该行设置断点。 7. 调试插件   设置好断点之后,在插件所在的web页面可以手动触发插件的事件。触发事件后可以调试插件了。 8. 在调试过程中,您可以使用断点和其他调试工具来查看插件的代码。此外,还可以使用控制台来查看已定义变量的值、执行代码等。 最后,如果您想获取更详细的关于Firefox Developer Edition的调试插件的信息,请参考官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值