利用Tracing阅读Chromium代码

Chromium中的Tracing工具可以记录每个函数的执行时间,是用来诊断浏览器性能问题的工具。它还有一个意想不到的用处,就是帮我们理解Chromium的代码,因为Tracing会把调用过的函数按照时间轴输出出来,通过Tracing的图形化界面,可以很清楚的明白对象函数之间的调用关系。 components/tracing/tracing_switches.cc代码文件的注释很清楚了介绍了Tracing命令行参数的用法: trace-config-file。这个开关指定Tracing命令行的配置文件,Tracing既可以通过命令行字符串设置配置,也可以通过加载一个配置文件来设置配置。 trace-shutdown。记录浏览器关闭时候到的Tracing信息。 trace-shutdown-file。把trace-shutdown记录的信息保存到一个指定的文件中。 trace-startup。记录浏览器启动时候的Tracing信息。 trace-startup-file。把trace-startup记录的信息保存到一个指定的文件中。 trace-startup-duration。设置trace-startup记录的秒数。 另外在trace-startup、trace-shutdown里面可以设置记录的Tracing类别,比如–trace-startup=base,net,就只会记录base和net类别的Tracing。 比如把以下命令行参数传递给浏览器: 它会记录浏览器启动的时候的Tracing信息,包含browser、content、input、renderer、renderer_host、startup、ui类别,记录10秒的数据,并把数据保存到tracing.json文件中。 然后浏览器地址栏中输入chrome://tracing/,点击左上角的Load按钮,加载我们生成的tracing.json数据文件,然后浏览器就会把数据以图形的样式展现给我们,如下图所示: 图中清楚显示了浏览器启动时做的各种初始化的工作,以及各种工作的先后次序。 Tracing中的数据是根据代码中的TRACE_EVENT宏收集到的: 我们也可以增进自己的数据,宏的第一个参数是类别。 ... Read More | Share it now!