Breakpad崩溃报告系统介绍

Breakpad是Google开发的一套开源的崩溃报告系统,它是跨平台的,支持Windows、Linux、Mac等操作系统,被Chrome、Firefox等各大软件采用。最近做Chromium内核升级,需要把Breakpad升级成Crashpad,故再看看Breakpad项目的实现,写篇博客总结一下。 Breakpad的机制 如上图所示是Breakpad的工作机制,它是参考Windows上那套崩溃处理机制。Windows上面编译器把代码编译成可执行文件,同时生成包含调试信息的PDB符号文件。程序运行发生崩溃时,将崩溃的堆栈等信息存储成一个dump文件。调试器打开dump文件并读取PDB里面的调试信息,就可以看到崩溃的堆栈。因为Breakpad是跨平台的,所以在Linux等其他平台也实现了Windows上的生成调试符号、生成dump、处理dump等功能。 Breakpad分为3个主要的模块: Client。Client模块会被编译到客户端程序中,它的职责包括捕获客户端的异常、生成崩溃的dump文件、上报dump文件到服务器。在Windows平台,我们只需要这部分就足够了。 Symbol... Read More | Share it now!

踏破铁鞋无觅处

最近学习Chromium的UI渲染,于是编译一下ui/views/examples的例子工程来看看。运行views_examples_exe,发现界面是上下颠倒显示。 一开始以为是例子工程可能好久没有维护了,在代码升级的过程中出了偏差,导致界面颠倒显示。于是自己动手写了一个例子工程,也是颠倒显示。看了下aura_demo工程界面的坐标,显示也是颠倒。我意识到这不是Aura层的问题,可能是CC模块通过GPU硬件加速渲染出来的结果本身就是颠倒的。 我家虚拟机里有Chromium... Read More | Share it now!