内容

尽管有很多工具和技巧可用于调试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?的更多相关文章

  1. 使用微信web开发者工具调试微信企业号页面(前端页面,已发布在服务器上的)

    前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是做一个记录,方便自己以后使 ...

  2. [LED]如何配置LCD背光和LED,调试方法

    [DESCRIPTION] 如何配置LCD背光和LED,调试方法 [SOLUTION]LCD背光和LED配置文件alps/custom/<proj name>lk/cust_leds.ca ...

  3. 【转】.NET多种WebKit内核/Blink内核浏览器初步测评报告

    第1篇:.NET多种WebKit内核/Blink内核浏览器初步测评报告 本文转自“吾乐吧软件站”,原文链接:http://www.wuleba.com/?p=23590 报告研究时间:2013-10- ...

  4. WPF.UIShell UIFramework之自定义窗口的深度技术 - 模态闪动(Blink)、窗口四边拖拽支持(WmNCHitTest)、自定义最大化位置和大小(WmGetMinMaxInfo)

    无论是在工作和学习中使用WPF时,我们通常都会接触到CustomControl,今天我们就CustomWindow之后的一些边角技术进行探讨和剖析. 窗口(对话框)模态闪动(Blink) 自定义窗口的 ...

  5. 如何配置LCD背光和LED,调试方法

    LCD背光和LED配置文件 alps/custom/<proj name>lk/cust_leds.c alps/custom/<proj name>/kernel/leds/ ...

  6. nodejs的调试

    js的调试始终是一个比较麻烦也是比较困难的事情,从最原始的alert调试,到火狐的firebug工具,在到后来各个浏览器厂商的调试工具.调试工具的发展历程,也可以看出由JS构建的业务和技术逻辑越来越复 ...

  7. 微信web开发者工具调试

    微信web开发者工具调试 前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是 ...

  8. windows程序员进阶系列:《软件调试》之Win32堆

     win32堆及内部结构 Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆.默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中. 要获得_PEB的地址, ...

  9. 使用VSCode和VS2017编译调试STM32程序

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台 ...

随机推荐

  1. [CTSC2007][APIO2007]数据备份Backup

    题目:BZOJ1150.codevs1615.洛谷P3620 题目大意:有n个点,k条链,每个点离原点有一定的距离.要你用k条链连接2k个点,使得k条链的长度最短. 解题思路:毕竟是CTSC级别的题目 ...

  2. 【mysql】新增、修改、删除、查询 语法讲义

    一.DML - 数据操作语言 INSERT - 实现数据表数据的新增 UPDATE - 实现数据表数据的修改 DELETE - 实现数据表数据的删除 二.INSERT 语法: insert into ...

  3. 第一个JavaWeb工程

    这个工程主要用来研究log4j,所以就只有一个页面,希望以后慢慢进步. java动态生成网页主要使用servlet.把请求拦截下来,处理后返回结果. 这里创建的是一个maven工程. 结构如下:

  4. HTML5 canvas炫酷棱镜效果的幻灯片特效

    这是一款效果很炫酷华丽的HTML5 canvas带棱镜效果的幻灯片特效. 这个特效在每个幻灯片的前面放置一个图形.并将图形制作为三棱镜效果.它底下的幻灯片图片会被"折射"到棱镜上面 ...

  5. Android 输入框限制字符输入数

    有时候对Android的输入框有字符输入数量的限制,而且显示字符输入的数量.通过下面方式能够实现: 1.自己定义LimitNumEditText继承EditText import android.co ...

  6. poj_1195Mobile phones,二维树状数组

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...

  7. 集合区别(list和linkedlist的区别)?

    1.list和linkedlist都是有序可重复,为什么还要用linkedlist呢? 数组和数组列表都有一个重大的缺陷,这就是从数组的中间位置删除一个元素需要付出很大的代价,其原因是数组中处于被删除 ...

  8. ubuntu12.04

    最近越来越觉得必须用Linux了,于是装了15.04,好不习惯的感觉,思维还是10.10的时代. 尝试做种http://jingyan.baidu.com/article/a681b0dedad55c ...

  9. webi和universe

    Universe是一个包含以下内容的文件: 1 一个或多个数据库中间件的连接参数. 2 称为对象的SQL结构,映射到数据库中的实际SQL结构,如列,表和数据库函数.其中对象是按类分组的.用户既可以看到 ...

  10. html5开发页游(前话)

    导师要求模仿某个页游网站开发益智小游戏.老板的要求是要跨平台,IOS,Android.PC.Mac等系统主要通过浏览器打开都能用.那个网站的页游是通过flash实现的,使用这种方法肯定不能满足老板的要 ...