# crashelper ## 1. 介绍 crashelper是一个用于帮助开发人员快速定位crash的辅助工具,`Windows`下暂时仅支持`MSVC`编译器。 用到了仅头文件项目 `=>` [backward-cpp](https://github.com/bombela/backward-cpp),`crashelper`已包含`backward-cpp`项目中的头文件。 `crashelper`对`backward-cpp`源码加了部分接口用于配置具体的日志保存路径,不能直接拿原项目头文件`backward.hpp`进行更新替换。 ## 2.使用依赖 `Linux`下依赖`binutils`库。 二进制的下载链接:[pkgs.org](https://pkgs.org/) ```shell # Ubuntu/Debian sudo apt-get install binutils-dev # REHL/CentOS/Fedora sudo yum install binutils-devel # openSUSE/SUSE sudo zypper install binutils-devel # Arch Linux/Manjaro sudo pacman -S binutils-devel/binutils-libs # Alpine sudo apk add binutils-dev ``` `Windows`下无其他三方依赖。 `MacOS`待补充。 # 3. 设计思路 ## 2.1 Windows `Windows`下,程序编译结果会额外产生`pdb`调试符号文件(此为额外的产生,不影响可执行程序的`Release`性,即不会影响代码优化和运行时性能),请妥善保存好此`pdb`文件,用于后续配合`dump`文件分析异常。`crashelper`会保存崩溃时的`windump`文件到设定的目录下,日志信息保存到设定的目录下。 ## 2.2 Linux 在`Linux`环境下,无论`Debug`还是`Release`模式,都将带有`-g`调试信息选项。 `-g`可以与任何级别的优化一起使用并带有调试信息,调试信息只占用二进制空间,正常代码逻辑不用用到它(不会加载到内存中使用),因此不会影响代码的优化结果,仅会影响到程序体积。 在Linux下的此模式,`crashelper`会仅保存崩溃时的调用栈信息,并将日志信息保存到设定的目录下。 ### 2.3 MacOS 待补充。