From ba0e32d7836ebc933434de38aa8334e722a379b5 Mon Sep 17 00:00:00 2001 From: taynpg Date: Wed, 16 Apr 2025 15:52:09 +0800 Subject: [PATCH] =?UTF-8?q?liunx=EF=BC=9Arelease=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 ++++++++++++++++++++------------------ crashelper/CMakeLists.txt | 1 + test/main.cxx | 3 +-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index c47121b..8e5f3ff 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,12 @@ crashelper是一个用于帮助开发人员快速定位crash的辅助工具,`W `crashelper`对`backward-cpp`源码加了部分接口用于配置具体的日志保存路径,不能直接拿原项目头文件`backward.hpp`进行更新替换。 -# 2. 设计思路 - -## 2.1. Debug模式 - -### 2.1.1 Windows - -在Windows下的此模式,`crashelper`会仅保存崩溃时的调用栈信息,并将日志信息保存到设定的目录下。 - -### 2.1.2 Linux - -在Linux下的此模式,`crashelper`会仅保存崩溃时的调用栈信息,并将日志信息保存到设定的目录下。 +## 2.使用依赖 `Linux`下依赖`binutils`库。 +二进制的下载链接:[pkgs.org](https://pkgs.org/) + ```shell # Ubuntu/Debian sudo apt-get install binutils-dev @@ -35,16 +27,26 @@ sudo pacman -S binutils-devel/binutils-libs sudo apk add binutils-dev ``` -二进制的下载链接:[pkgs.org](https://pkgs.org/) +`Windows`下无其他三方依赖。 -其中`binutils`部分: +`MacOS`待补充。 -### 2.1.3 MacOS +# 3. 设计思路 -待补充。 +## 2.1 Windows -## 2.2. Release模式 +`Windows`在`Debug`模式下,`crashelper`会**仅保存**崩溃时的调用栈信息,并将日志信息保存到设定的目录下。 -### 2.2.1 Windows +`Windows`在`Release`模式下,程序编译结果会额外产生`pdb`调试符号文件(此为额外的产生,不影响可执行程序的`Release`性,即不会影响代码优化和运行时性能),请妥善保存好此`pdb`文件,用于后续配合`dump`文件分析异常。`crashelper`会保存崩溃时的`windump`文件到设定的目录下。 -在Windows下的此模式,程序编译结果会额外产生`pdb`调试符号文件(此为额外的产生,不影响可执行程序的`Release`性,即不会影响代码优化和运行时性能),请妥善保存好此`pdb`文件,用于后续配合`dump`文件分析异常。程序运行时,`crashelper`会保存崩溃时的`dump`文件到设定的目录下。 \ No newline at end of file +## 2.2 Linux + +在`Linux`环境下,无论`Debug`还是`Release`模式,都将带有`-g`调试信息选项。 + +`-g`可以与任何级别的优化一起使用并带有调试信息,调试信息只占用二进制空间,正常代码逻辑不用用到它(不会加载到内存中使用),因此不会影响代码的优化结果,仅会影响到程序体积。 + +在Linux下的此模式,`crashelper`会仅保存崩溃时的调用栈信息,并将日志信息保存到设定的目录下。 + +### 2.3 MacOS + +待补充。 \ No newline at end of file diff --git a/crashelper/CMakeLists.txt b/crashelper/CMakeLists.txt index be3ec9c..2ca4783 100644 --- a/crashelper/CMakeLists.txt +++ b/crashelper/CMakeLists.txt @@ -15,6 +15,7 @@ add_library(crashelper STATIC ${CRASHELPER_SOURCES}) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") target_link_libraries(crashelper PUBLIC pthread dl bfd) +target_compile_options(crashelper PUBLIC -g) elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") target_link_libraries(crashelper PRIVATE DbgHelp) diff --git a/test/main.cxx b/test/main.cxx index 93c0164..c58f59a 100644 --- a/test/main.cxx +++ b/test/main.cxx @@ -18,8 +18,7 @@ int main() SetDumpFileSavePath("D:\\dump"); SetDumpLogSavePath("D:\\dump"); #else - SetDumpFileSavePath("~/dump"); - SetDumpLogSavePath("~/dump"); + SetDumpLogSavePath("dump"); #endif CRASHELPER_MARK_ENTRY();