Chrome源代码调试总结

2022-06-14 08:58:54 浏览数 (1)

前面进行chrome定制开发实践,本文总结chrome调试心得,以备后续使用

一、调试手段

  1. 日志跟踪程序流程

默认,chrome只会打开错误级别,很多调试日志都不输出。在启动时,通过命令行打开日志级别即可。

如果release版本就会在

C:UsersxxxxxxAppDataLocalChromiumUser Data 目录下产生一个chrome_debug.log日志

如果是debug版本,就在当前目录下产生一个chrome_debug.log

在代码中我们可以用类似

DVLOG(1) << "hello Device type d3d11va is supported." << 1;

来打印日志跟踪问题。

2、IDE调试

Chrome也可以用xcode,VS等IDE调试。本文以VS2019为例。

A)先启动chrome.exe,由于chrome是多进程工作模式,在调试时将其他无关的chrome页面关闭,仅仅保留调试页面,缩小跟踪的chrome.exe范围。

B)使用VS2019 attach到所有chorme进程(因为chorme是用多进程工作,我们并不知道我们的代码跑在哪个chorme进程,所以要attach到所有进程)。

当然,也可以通过日志定位到这个关注代码执行在哪个进程(日志每一行带有进程ID的),然后仅仅attach这一个进程亦可。

C)在源代码中打断点,即可段住指定进程,然后进程各种手段调试(看内存,看变量,看堆栈,单步等)。

二 、Chromium调试心得

  1. 对于音视频的解封,是ffmpeg完成。
  2. 对于音视频的解码, 音频解码时ffmpeg完成,视频软解是ffmpeg完成,视频的硬解是另外一个GPU进程来完成。
  3. GPU解码相关代码在D:chromiumsrcmediagpu目录下,实现了windows上的h264,VP8,VP9,av1的硬解,唯独对h265没有实现。其他linux,mac,android都有相应的硬件解码实现。
  • 以上只是近段时间调试chrome的心得,后面我们将探索h265的硬解码支持。

0 人点赞