如何调试Blink?

内容
尽管有很多工具和技巧可用于调试Blink,这个文章的重点调试Blink除布局測试之外的feature。
1 介绍
2 Linux
2.1 入门
2.2 启动Debugger
3 实用的工具
3.1 Debugging functions
3.2 Blink GDB python library
4 打印 back trace
4.1 利用ASSERT打印符号
4.2 Use Chromium's StackTrace
4.3 利用BACKTRACE() 打印符号
主要有两种途径进入Blink:通过调试Chromium二进制文件本身或content_shell。Blink调试大多数情况,后者是建议的选项。由于它大大降低了尺寸和复杂性。这意味着我们须要build content_shell,相比較而言,这应该更简单、使之成为我们构建目标的更简单的方法。
把content_shell本身作为參数。后面跟着要执行Blink的HTML文件,这样来执行content_shell。
此外,最简单的类型调试是:你可能想要做的一个是看看页面载入后的主要的页面结构(在这Blink的内部结构被称为布局树。不要与DOM树或Frame树混淆了:)。
你能够用一个简单的命令行选项做到这一点:
content_shell --dump渲染树的test.html
启动调试器
调试Linux上的content_shell通经常使用GDB完毕。如果你正在使用content_shell,你可能会想在单进程模式下执行,当然。除非,你正在处理线程问题。
单进程模式下执行将极大地简化设置,并加快调试过程。这样做非常easy。仅仅要用--single进程标志启动content_shell。
一个常见的GDB命令是:
gdb --args content_shell --single-process test.html
假设您无法使用--single-,你能够使用--renderer-启动-对话框来取代。仅仅需content_shell与正常运行的标志,你通过它以及--renderer-启动,对话框渲染器将处于暂停状态,并同意您在继续执行之前附加一个调试器。
一般实用的调试工具
调试功能
您能够使用GDB命令打印显示它们。以下是一些Blink的调试功能:
showTreeForThis()节点和LayoutObjects输出DOM树
showLayoutTreeForThis()LayoutObjects输出布局树
showLineTreeForThis()LayoutObjects和InlineBoxes输出的内框树关联的block flow。标志着与此相关的一个全部匹配的行内框。
showDebugData()DisplayItemLists输出的显示项目的列表和相关联的调试数据
如果一个局部变量child是一个LayoutObject,以下将打印布局树:
(GDB)print child> showLayerTreeForThis()
Blink GDB Python库
当使用支持Python中的GDB。还有有用的功能,能够使一些Blink的类型更easy、更方便输出,比如LayoutUnit和LayoutSize类美丽的打印出来。我们能够在third_party/ WebKit的/工具/ GDB / webkit.py找到它。
本文属原创,转载请注明出处。违者必究
关注微信公众平台:程序猿互动联盟(coder_online)。你能够第一时间获取原创技术文章。和(java/C/C++/Android/Windows/Linux)技术大牛做朋友。在线交流编程经验。获取编程基础知识。解决编程问题。程序猿互动联盟。开发者自己的家。

如何调试Blink?的更多相关文章
- 使用微信web开发者工具调试微信企业号页面(前端页面,已发布在服务器上的)
前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是做一个记录,方便自己以后使 ...
- [LED]如何配置LCD背光和LED,调试方法
[DESCRIPTION] 如何配置LCD背光和LED,调试方法 [SOLUTION]LCD背光和LED配置文件alps/custom/<proj name>lk/cust_leds.ca ...
- 【转】.NET多种WebKit内核/Blink内核浏览器初步测评报告
第1篇:.NET多种WebKit内核/Blink内核浏览器初步测评报告 本文转自“吾乐吧软件站”,原文链接:http://www.wuleba.com/?p=23590 报告研究时间:2013-10- ...
- WPF.UIShell UIFramework之自定义窗口的深度技术 - 模态闪动(Blink)、窗口四边拖拽支持(WmNCHitTest)、自定义最大化位置和大小(WmGetMinMaxInfo)
无论是在工作和学习中使用WPF时,我们通常都会接触到CustomControl,今天我们就CustomWindow之后的一些边角技术进行探讨和剖析. 窗口(对话框)模态闪动(Blink) 自定义窗口的 ...
- 如何配置LCD背光和LED,调试方法
LCD背光和LED配置文件 alps/custom/<proj name>lk/cust_leds.c alps/custom/<proj name>/kernel/leds/ ...
- nodejs的调试
js的调试始终是一个比较麻烦也是比较困难的事情,从最原始的alert调试,到火狐的firebug工具,在到后来各个浏览器厂商的调试工具.调试工具的发展历程,也可以看出由JS构建的业务和技术逻辑越来越复 ...
- 微信web开发者工具调试
微信web开发者工具调试 前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是 ...
- windows程序员进阶系列:《软件调试》之Win32堆
win32堆及内部结构 Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆.默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中. 要获得_PEB的地址, ...
- 使用VSCode和VS2017编译调试STM32程序
近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台 ...
随机推荐
- ES6学习笔记(二十二)ArrayBuffer
ArrayBuffer ArrayBuffer对象.TypedArray视图和DataView视图是 JavaScript 操作二进制数据的一个接口.它们都是以数组的语法处理二进制数据,所以统称为二进 ...
- HDU-4221 Greedy? 贪心 从元素的相对位置开始考虑
题目链接:https://cn.vjudge.net/problem/HDU-4221 题意 给n个活动,每个活动需要一段时间C来完成,并且有一个截止时间D 当完成时间t大于截止时间完成时,会扣除t- ...
- 【Paper Reading】Improved Textured Networks: Maximizing quality and diversity in Feed-Forward Stylization and Texture Synthesis
Improved Textured Networks: Maximizing quality and diversity in Feed-Forward Stylization and Texture ...
- 紫书 习题 8-13 UVa 10570 (枚举+贪心)
我看到数据范围只有500, 第一反应枚举所有的可能,然后求出每种可能的最小次数. 但是不知道怎么求最小次数.我想的是尽量让一次交换可以让两个不在应该在的位置的数字 到原来应该在的位置的数字, 这样可以 ...
- UVA 12003 Array Transformer
Array Transformer Time Limit: 5000ms Memory Limit: 131072KB This problem will be judged on UVA. Orig ...
- 阿里云CentOS系统配置iptables防火墙
虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FORWORD都是ACCEPT的规则 一.检查iptabl ...
- [poj 2773] Happy 2006 解题报告 (二分答案+容斥原理)
题目链接:http://poj.org/problem?id=2773 题目大意: 给出两个数m,k,要求求出从1开始与m互质的第k个数 题解: #include<algorithm> # ...
- App server 与 Web server之间的区别
原文: http://www.javaworld.com/javaqa/2002-08/01-qa-0823-appvswebserver.html 简单来说,web服务器提供页面给浏览器,而app服 ...
- PostgreSQL Replication之第四章 设置异步复制(3)
4.3 slave到master的切换 如果您想扩展读或您想做一个数据备份,一个 slave是件美好的事情.但是,slave可能不会一直是slave.在有些时候,您可能需要把slave转换为maste ...
- tomcat web容器工作原理
Tomcat的模块结构设计的相当好,而且其Web 容器的性能相当出色.JBoss直接就使用了Tomcat的web容器,WebLogic的早期版本也是使用了Tomcat的代码.Web容器的工作过程在下面 ...