当前位置: 首页 > news >正文

【代码片段】Linux C++打印当前函数调用堆栈

在开发大型项目时,尤其是多线程情况下,一般无法使用断点调试,这时候将当前函数的调用堆栈打印出来是非常有必要和有效的问题排查手段。
这里记录一段Linux环境下,打印函数堆栈的代码。

void get_native_callstack(std::string &callstack, int level)
{void* buf[128];int size = backtrace(buf, sizeof(buf));char** strings = backtrace_symbols(buf, size);if (strings != NULL) {for (int i = 0; i < size; i++) {callstack.append(strings[i]);callstack.append("\n");}free(strings);} else {callstack = "";}
}void get_full_callstack(std::string &callstack, int level)
{return get_native_callstack(callstack, level);
}

使用:

std::string callstack;
get_full_callstack(callstack, 10); //打印10层堆栈
http://www.lryc.cn/news/275279.html

相关文章:

  • Linux程序、进程以及计划任务(第一部分)
  • Oracle database 12cRAC异地恢复至单机
  • 【docker】linux部署docker
  • 【K8S 云原生】Pod资源限制、Pod容器健康检查(探针)
  • Python从入门到网络爬虫(模块详解)
  • [大厂实践] 无停机迁移大规模关键流量(下)
  • VMware Workstation虚拟机CentOS 7.9 配置固定ip的步骤
  • 构建自己的私人GPT
  • EtherCAT主站SOEM -- 14 --Qt-Soem通过界面采集从站IO进行显示
  • 线程安全、共享变量的可见性
  • 电动汽车BMS PCB制板的技术分析与可制造性设计
  • Android 车联网——多屏多用户(十五)
  • uwsgitop 使用
  • 深信服技术认证“SCSA-S”划重点:文件包含漏洞
  • Color Control
  • 端口开放问题
  • KNN 回归
  • Kali Linux——获取root权限
  • 听GPT 讲Rust源代码--compiler(28)
  • Debezium日常分享系列之:Debezium2.5版本之connector for JDBC
  • 爬虫网易易盾滑块案例:某乎
  • 机器学习笔记 - 偏最小二乘回归 (PLSR)
  • 【HTML5】第1章 HTML5入门
  • dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib
  • React Hooks中useState的介绍,并封装为useSetState函数的使用
  • 5 个最适合SEI 网络空投交易等操作的钱包(Bitget Wallet,Coin98等)
  • .net8 AOT编绎-跨平台调用C#类库的新方法-函数导出
  • 第三十八周周报:文献阅读 +BILSTM+GRU+Seq2seq
  • 天津最新web前端培训班 如何提升web技能?
  • Linux下QT生成的(.o)、(.a)、(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)之间的区别