内容

尽管有很多工具和技巧可用于调试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. java 导出百万数据到excel

    @RequestMapping("export") public void write(HttpServletRequest request,HttpServletResponse ...

  2. python scrapy爬取HBS 汉堡南美航运公司柜号信息

    下面分享个scrapy的例子 利用scrapy爬取HBS 船公司柜号信息 1.前期准备 查询提单号下的柜号有哪些,主要是在下面的网站上,输入提单号,然后点击查询 https://www.hamburg ...

  3. NPOI操作Excel 004:写入空Excel(添加保存提示框)

    前文说道写入excel的样例,当中保存Excle后须要添加提示框.让用户自己选择保存路径,做改动例如以下. 引用的dll等前面已经说过了, 直接看代码: protected void Btn_Writ ...

  4. nyoj--12--喷水装置(二)(区间覆盖问题+贪心)

    喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水 ...

  5. POJ 3279 枚举?

    思路: 1.枚举第一行 递推剩下的 判断最后一行成不成立 2. (误)高斯消元? 如何判断1最少和字典序最小- (所以这种做法好像不可取) //By SiriusRen #include <cs ...

  6. [-] Failed to load plugin from /usr/share/metasploit-framework/plugins/db_autopwn: No classes were loaded from /usr/share/metasploit-framework/plugins/db_autopwn in the Msf::Plugin namespace.

    问题详情 然后,执行,出现如下问题,则说明大家的这个文件,下载不是完整的或者你上传不完整. msf > load db_autopwn [-] Failed to load plugin fro ...

  7. 点击鼠标右键弹出错误提示:CrashHandler initialization error

    电脑重装系统后,什么都没有了,重装部分必须用的软件后,不管是在桌面还是在文件夹中,当点击鼠标右键时,总是弹出错误,如下图所示: 上网找解决方法,也没有找到,但是看错误,是与SVN有关. 产生原因:To ...

  8. vue 中使用querySelect 封装的万能选择器

    function query (el) { if (typeof el === 'string') { var selector = el; el = document.querySelector(e ...

  9. The Future Of ReactiveCocoa by Justin Spahr-Summers

    https://www.bilibili.com/video/av9783052?from=search&seid=14165903430339282774

  10. 使用sysbench 对mysql进行性能测试

    使用sysbench 对mysql进行性能测试 sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有My ...