怎样调试Blink?

来源:互联网 发布:图数据库之王 neo4j 编辑:程序博客网 时间:2024/05/01 00:40

1239390617156488

内容

虽然有许多工具和技巧可用于调试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,你可能会想在单进程模式下运行,当然,除非,你正在处理线程问题。单进程模式下运行将极大地简化设置,并加快调试过程。这样做很简单,只要用--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的类型更容易、更方便输出,例如LayoutUnit和LayoutSize类漂亮的打印出来。我们可以在third_party/ WebKit的/工具/ GDB / webkit.py找到它。

阅读原文

本文属原创,转载请注明出处,违者必究

关注微信公众平台:程序员互动联盟(coder_online),你可以第一时间获取原创技术文章,和(java/C/C++/Android/Windows/Linux)技术大牛做朋友,在线交流编程经验,获取编程基础知识,解决编程问题。程序员互动联盟,开发人员自己的家。

编程菜鸟入门必备书籍

0 0
原创粉丝点击