前面进行chrome定制开发实践,本文总结chrome调试心得,以备后续使用
一、调试手段
- 日志跟踪程序流程
默认,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调试心得
- 对于音视频的解封,是ffmpeg完成。
- 对于音视频的解码, 音频解码时ffmpeg完成,视频软解是ffmpeg完成,视频的硬解是另外一个GPU进程来完成。
- GPU解码相关代码在D:chromiumsrcmediagpu目录下,实现了windows上的h264,VP8,VP9,av1的硬解,唯独对h265没有实现。其他linux,mac,android都有相应的硬件解码实现。
- 以上只是近段时间调试chrome的心得,后面我们将探索h265的硬解码支持。