上一篇我们简单的将了在Ubuntu上编译chromium,android content_shell_apk的编译,一切顺利的就能生成apk。但是我们仅仅只是照搬了人家google开源的东西,作为一个开发者我们应带着探索的精神,都说它稳定,速度快。它为什么这么快、稳定? 带着这一系列的问题,我们去学习理解它,去搞明白它的原理、架构。

所以......

一切精妙的东西最终又归结到源码上,直到我们了解它熟悉它。怎么快速的的了解熟悉它呢?不外乎2点

1、大量的代码阅读

2、跟踪调试代码

今天我们就简单的学习一下在Ubuntu下简单调试chromium代码

首先我们必须弄个Debug调试版本在Ubuntu上运行调试。

编译步骤:

1、build/install-build-deps.sh

2、build/gyp_chromium-Dflag1=value1-Dflag2=value2

3、export GYP_DEFINES="flag1=value1 flag2=value2"

4、ninja-v-Cout/Debug chrome

编译成功后会在src/out/Debug 下生成300个左右文件其中有chrome可执行程序和库。

调试:

调试多进程最简单的方法是用 attach pid

shell下:gdb src/out/Debug/chrome 启动到gdb输入后用 r -no-sandbox (沙箱模式无法运行,有待研究)

ps -ax 查看进程id

或者用pstree
-p|grep chrome

再新打开的shell输入sudo
gdb (有权限限制必须用root权限)

gdb启动后输入attach
pid 然后加上你要调试的断点

我们调试RenderImage.cpp
 layout 函数在绘制进程中调用堆栈

有了函数调用堆栈顺序,你有不理解不清楚的地方加个断点,查看堆栈一切都这么简单。

Debug调试只能起到辅助作用,学习还是需要我们理解框架、大量阅读源码。

如果大家对本系列文章有疑问,可以直接在公众号留言,小编第一时间联系原创作者帮你耐心解答。

技术人员都有自己的情怀,深陷其中而不被理解,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),

摘自:http://my.oschina.net/u/2335812/blog/398433

最新文章

  1. Ubuntu下的MySQL安装
  2. IE下new Date不支持传参数的解决
  3. Git服务器搭建及配置
  4. java 中 finally里面写了return 会发生什么?
  5. 在MVC5和webAPI下是用Autofac依赖注入
  6. 成功熬了四年还没死?一个IT屌丝创业者的深刻反思
  7. 10与元素亲密接触:盒元素(the box model)
  8. 安卓:drawable
  9. ASP.NET Web API与Rest web api(一)
  10. HTTP 500 的解决方案
  11. 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
  12. javascript系列之DOM(一)
  13. cmusphinx格式问题
  14. 201521123096《Java程序设计》第九周学习总结
  15. 将Word表格中单元格中的文字替换成对应的图片
  16. [Domino]Java访问Domino必需配置的服务器设置
  17. 第四天 Java语言基础
  18. easyUI中textbox或number的数值大小校验
  19. MyBatis学习(七)MyBatis关联映射之多对多映射
  20. Git 配置命令设置

热门文章

  1. k近邻法的C++实现:kd树
  2. 【HTML】KindEditor编辑器在ASP.NET中使用
  3. Codeforces Good bye 2015 B. New Year and Old Property dfs 数位DP
  4. uva 387 A Puzzling Problem (回溯)
  5. [置顶] Android开发之MediaPlayerService服务详解(一)
  6. Android 实现自动接听和挂断电话功能
  7. mybatis 报错:Caused by: java.lang.NumberFormatException: For input string
  8. Eclipse中R文件不能自动生成
  9. ubuntu14 部署zookeeper3.4.6启动失败
  10. ES6新特性以及一些规范