cpptrace 库介绍

cpptrace 是一个C++ 开源库, 简单试了下,我的发现和结论:

  • 还不能通过 brew install 安装
  • 最方便方式仍然是 git clone 源码后, CMakeLists.txt 里, add_subdirectory() 方式使用:
add_subdirectory("/path/to/cpptrace" cpptrace.out)
target_link_libraries(xxx cpptrace-lib)
  • cpptrace 主要是给库或程序的开发者用的, 当你写的代码遇到不理想输入时候打算让程序主动崩溃时, cpptrace 能打印完整的调用堆栈
  • 但是如果你是调用别人的代码,比如调用 OpenCV 的矩阵乘法, 而两个矩阵的维度不一样导致了报错,这时候只能看到 opencv 里面抛出异常信息中的 文件:行号, 看不到你的调用代码的位置
  • 简单说, 如果你在重写 opencv, 那你应该用 cpptrace 替代 opencv 原本的那一坨带 exception 的 CV_Assert 的实现

具体到 c++ 代码的用法, 你需要包含头文件,定义一个 trace() 函数, 然后在你的代码中,你打算主动挂掉程序的地方, 调用 trace():

// https://github.com/jeremy-rifkin/cpptrace/blob/main/test/add_subdirectory-integration/main.cpp
#include <cpptrace/cpptrace.hpp>

void trace() {
   
    cpptrace::generate_trace().print();
}

void foo(int) {
   
    trace();
}

int main() {
   
    foo(0);
}

又或者, 你调用了第三方库(如果 opencv),你现在遇到第三方库里的报错挂掉了(“主动挂掉”), 但你不知道你的代码在哪里挂的, 在使用二分法排查时, 如果你大概确定了是某一个函数 A() 里面调用了 opencv 挂的, 那么从 main() 函数到 A() 函数的调用堆栈, 可以通过调用 trace() 函数打印出来, 也是有一些帮助的。

相关推荐

  1. cpptrace 介绍

    2024-02-18 21:36:01       57 阅读
  2. ml_collections介绍

    2024-02-18 21:36:01       61 阅读
  3. C++ filesystem介绍

    2024-02-18 21:36:01       45 阅读
  4. Numpy介绍

    2024-02-18 21:36:01       30 阅读
  5. windows 动态和静态 介绍

    2024-02-18 21:36:01       55 阅读
  6. c++IO详细介绍

    2024-02-18 21:36:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 21:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 21:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 21:36:01       82 阅读
  4. Python语言-面向对象

    2024-02-18 21:36:01       91 阅读

热门阅读

  1. 自研爬虫框架的经验总结(理论及方法)

    2024-02-18 21:36:01       41 阅读
  2. 有哪几种行为会导致服务器被入侵

    2024-02-18 21:36:01       48 阅读
  3. 题记(44)--矩阵旋转

    2024-02-18 21:36:01       45 阅读
  4. IP地址0.0.0.0和255.255.255.255是什么

    2024-02-18 21:36:01       52 阅读
  5. Math--API

    2024-02-18 21:36:01       43 阅读
  6. SpringBoot中公共字段的自动填充

    2024-02-18 21:36:01       55 阅读
  7. Uniapp uni-app学习与快速上手

    2024-02-18 21:36:01       47 阅读
  8. 中断系统(单片机)

    2024-02-18 21:36:01       50 阅读
  9. 面试指导(面试会遇到的问题准备)

    2024-02-18 21:36:01       48 阅读
  10. 红队信息收集&移动安全入门

    2024-02-18 21:36:01       44 阅读
  11. js作用域

    2024-02-18 21:36:01       48 阅读