档案

Archive for 2012年11月

Chrome for Android的sandbox机制

11月 26, 2012 留下评论

与其他大部分浏览其不同的是,Chrome采用的是多进程框架(http://www.chromium.org/developers/design-documents/multi-process-architecture),多进程框架除了稳定、快速之外一个非常重要的特点是可以方便的提供Sandbox机制来隔离网页渲染以及不安全脚本,使得浏览器更加安全。关于Linux下面的Chrome的Sandbox机制前面的文章已经经过相应的分析,本篇主要分析Chrome for Android中的Sandbox机制的实现。
阅读更多…

分类:Browser

关于Chrome for Android

11月 25, 2012 留下评论

1, Chrome for Android与Chromium for Android

Chrome是google的一个商标, 所以我们谈及Chrome的时候特指由Google发布的Chrome浏览器,而Chromium则是Chrome浏览器的对应的开源项目(http://www.chromium.org/)。 简单的说Chrome即是在Chromium的源代码基础上做一些产品化的工作并由Google发布出来的浏览器。Chrome for Android亦是如此。

2, Chromium for Android的源代码

目前,Chromium for Android的源代码并没有完全开放出来。 开放出的元带埋在Chromium的源代码目录树中,只需要很少的配置即可变异出Android版本的Chromium所需要的核心模块。 在Chromium的源代码中, 主要的部分已经开源并可以工作(WebKit、多进程框架、页面渲染、基本的事件处理、单元测试模块以及一个用于测试的基本的浏览器Shell程序)。 可以采用Git来检出所有的源代码:
http://code.google.com/p/chromium/wiki/UsingNewGit

3, 编译Chromium for Android及测试运行Shell程序(Content Shell)

关于编译,具体可参照官方的链接:
http://code.google.com/p/chromium/wiki/AndroidBuildInstructions
有几点需要注意的是:
阅读更多…

分类:Browser

源代码中插入断点以方便调试

11月 21, 2012 留下评论

主要利用中断int 3:

#define DEBUG_BREAK do {asm volatile ("int3"); } while(0)

但是, 在没有attach调试器的情况下直接调用int3触发SIGTRAP会导致进程退出, 因此需要再这之前检查进程是否已经被调试器attach。
1,在OSX/BSD上可以使用sysctl来检测;
2,在Linux中可以通过读取/proc/self/status文件的TracerPid字段来检查进程是否被attach (如果未被attach, 则TracerPid:0);
3, Windows上则直接有IsDebuggerPresent API可以使用。
阅读更多…

分类:C/C++