使用 gdb 脚本捕获 crash 时的 stack

crashreport.gdb

在看TrinityCore代码时,看到一段有趣的脚本(crashreport.gdb):

set logging overwrite on
set logging file backtrace.log.temp
set style enabled off
set height unlimited
set width unlimited
set disassembly-flavor intel
handle SIG33 pass nostop noprint
set pagination 0
set logging on
echo \n--- DEBUG: --- START\n\n
run
# check if exited normally
if $_isvoid($_exitcode)echo \n--- DEBUG: BACKTRACE FULL\n# print assertion message if this is ASSERT crashif TrinityAssertionFailedMessage != 0printf "%s\n", TrinityAssertionFailedMessageendecho \nbacktrace fullecho \n--- DEBUG: INFO REGISTERS\n\ninfo registersecho \n--- DEBUG: CALLS (x/16i $pc)\n\nx/16i $pcecho \n--- DEBUG: THREAD APPLY ALL BACKTRACE\nthread apply all backtraceecho \n--- DEBUG: --- STOP\n\necho Generated by crashreport.gdb script version 1.4\nset logging off# rename log file to avoid it getting overwritten by restart scriptsshell mv backtrace.log.temp backtrace_$(date +%Y-%m-%d-%T).log
else# normal exit, cleanup temp fileset logging offshell rm backtrace.log.temp
end
quit

脚本内容都是 gdb 的命令,很简单,可问 ChatGPT

这段脚本,可以在程序 crash 时,把堆栈信息,存入文件

如何使用

gdb -x crashreport.gdb <executable file>

其他

原来我的做法是,用 signal 在程序内注册异常处理句柄,执行 gdb 命令

相比而言,这种方法更轻便、灵活,且无侵入性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为HCIP Datacom H12-821 卷24

1.单选题 企业大楼有大量员工通常都在上班时在大厅开始接入到公司的WLAN网络,随着每位员工走到各自的工位过程中&#xff0c;每个人的移动端叶通过漫游的方式漫游到各自的网络覆盖区域。为了尽量保证每个终端的IP地址是固定的&#xff0c;建议的做法是? A、配置VLAN Poo…

统计信号处理基础 习题解答11-13

题目 如果是一个2x1的随机矢量&#xff0c;具有PDF 证明的PDF是一个随机变量。提可以因式分解成&#xff0c;其中是一个在4.5节描述的白化变换。 解答 首先&#xff1a; 因此&#xff0c;存在&#xff1a; 也就是是Hermitian矩阵。详细的性质可以参考&#xff1a; https://z…

抠图怎么抠?教你3种一看就会的抠图工具

抠图怎么抠&#xff1f;抠图&#xff0c;作为图像处理中的一项基本而强大的技能&#xff0c;广泛应用于摄影后期、广告设计、影视特效等多个领域。它能够将图像中的特定对象或区域从背景中精确分离出来&#xff0c;便于后续编辑或与其他图像合成。随着科技的发展&#xff0c;现…

大模型技术方向夏令营1期-对话分角色要素提取挑战赛

#AI夏令营 #Datawhale #夏令营 一、 baseline 跑通 Baseline 本身挑战性有限&#xff0c;关键是熟悉 LLM-centric 相关任务 coding 层面的流程方法&#xff0c;比如: 大模型 API&#xff08;这里为科大讯飞 Spark&#xff09;调用token消耗的理解如何调用大模型实现针对给定…

个人PayPal账户与企业PayPal账户:差异与选择

PayPal作为全球领先的在线支付平台&#xff0c;为不同用户群体设计了两种类型的账户&#xff1a;个人账户和企业账户&#xff0c;不仅为个人用户提供了便捷的支付和收款服务&#xff0c;同时也为企业用户提供了丰富的电子商务解决方案&#xff0c;让个人和企业都能使用便捷的电…

【Nginx】学习及相关题目整理

文章目录 1. 什么是Nginx&#xff1f;2. Nginx有哪些优点&#xff1f;3. Nginx处理请求流程&#xff1f;4. Nginx应用场景5. Nginx是如何实现高并发的&#xff1f;6. 什么是正向代理&#xff1f;7. 什么是反向代理&#xff1f;8. 反向代理服务器的优点是什么?9. Nginx目录结构…

android Gradle储蓄地址

在使用 Gradle Wrapper 时&#xff0c;Gradle 分发版&#xff08;distribution&#xff09;会下载并存储在本地计算机的特定目录下&#xff0c;以便在将来使用相同版本的 Gradle 时无需重新下载。默认情况下&#xff0c;Gradle 分发版存储在用户的主目录下。 默认存储位置 默…

实现高效写入:Schemaless 写入性能优化指南

物联网应用常常需要收集大量的数据&#xff0c;用以支持智能控制、业务分析和设备监控等功能。然而&#xff0c;应用逻辑的更新或硬件的调整可能会导致数据采集项频繁变化&#xff0c;这是时序数据库&#xff08;Time Series Database&#xff0c;TSDB&#xff09;面临的一大挑…

vue中自定义设置多语言,并且运行js脚本自动生成多语言文件

在项目中需要进行多个国家语言的切换时&#xff0c;可以用到下面方法其中一个 一、自定义设置多语言 方法一: 可以自己编写一个设置多语言文件 在项目新建js文件&#xff0c;命名为&#xff1a;language.js&#xff0c;代码如下 // language.js 文档 let languagePage {CN…

红酒与舞蹈:舞动的味觉艺术

在艺术的海洋中&#xff0c;红酒与舞蹈总是能激起人们心中较温柔的涟漪。红酒以其深邃的色泽、馥郁的香气&#xff0c;诠释着味觉的艺术&#xff1b;而舞蹈&#xff0c;则以优雅的姿态、灵动的步伐&#xff0c;演绎着视觉的盛宴。当红酒遇上舞蹈&#xff0c;一场别开生面的艺术…

代码随想录Day66(图论Part03)

101.孤岛的总面积 题目&#xff1a;101. 孤岛的总面积 (kamacoder.com) 思路&#xff1a;无 答案 import java.util.Scanner;class Main {private static int N, M;private static int[][] grid;private static boolean[][] visited;private static boolean touchesEdge;publi…

少见的更优写法,反转字符串中的元音字母

Leetcode 原题链接 解法一 这道题很简单&#xff0c;令双指针 l l l 和 r r r 从两侧相向移动&#xff0c;交换元音字母即可。但大多人的实现是如下这种可简化的嵌套循环。 如果是 Java 等 String 不可变的语言&#xff0c;应先转换为 CharArray&#xff0c;交换完元音字母…

数据库相关学习记录

oracle如何对A-数字-数字类型的字段进行排序 在Oracle中&#xff0c;如果你有一个字段&#xff0c;比如 A-数字-数字 的格式&#xff0c;并且你想要根据这样的格式对数据进行排序&#xff0c;你可以使用 REGEXP_SUBSTR 函数来提取并且转换字符串中的数字部分&#xff0c;然后进…

上海市计算机学会竞赛平台2023年5月月赛丙组滑雪训练

题目描述 小爱最近迷上了滑雪&#xff0c;某滑雪场有 &#x1d45b;n 条不同难度的雪道&#xff0c;只有学习并滑了第 &#x1d456;i 条雪道&#xff0c;才能去参加第 &#x1d456;1i1 条雪道的学习与训练。 已知&#xff0c;第一次滑第 &#x1d456;i 条雪道时&#xff0…

【shell】将txt文件拆成n个,文本均匀按行分布

#!/bin/bash # 原始文件名 source_file"/home/part.txt"# 目标文件存放目录 target_dir"/home"# 想要的近似文件数量 desired_files2 # 请将n替换为具体的数字&#xff0c;比如100# 确保目标目录存在 mkdir -p "$target_dir"# 计算原始文件的…

家用洗地机什么牌子好?四款公认品牌好的机型推荐

每个人都希望自己的家里面能够干干净净&#xff0c;就算不是一尘不染&#xff0c;也至少应该是整洁的&#xff0c;但是在这个快节奏的大环境下&#xff0c;做清洁对于人们来说&#xff0c;不是没时间&#xff0c;就是太累了。正当此时&#xff0c;一款造福懒人的神器——家用洗…

Double 4 VR虚拟仿真教学系统在商务英语课堂上的应用

随着科技的飞速发展&#xff0c;VR&#xff08;虚拟现实&#xff09;技术逐渐在教育领域展现出其独特的魅力。特别是在商务英语课堂上&#xff0c;Double 4 VR虚拟仿真教学系统正逐渐成为一种新颖而有效的教学工具。 一、Double 4 VR虚拟仿真教学系统的引入 在传统的商务英语…

4D 生物打印技术的挑战:从打印到植入,还有多远?

4D生物打印技术将时间维度融入生物打印&#xff0c;为构建具有动态特性和功能的生物组织结构提供了无限可能。然而&#xff0c;要实现这些目标&#xff0c;选择合适的生物打印技术至关重要。本文将详细介绍几种主要的4D生物打印技术&#xff0c;并分析它们各自的优缺点&#xf…

Linux—— 逻辑运算符,压缩和解压缩

- -a&#xff1a; and 逻辑与 - -o&#xff1a; or 逻辑或 - -not&#xff1a; not 逻辑非 - 优先级&#xff1a;与>或>非 shell [rootserver ~]# find / -size 10k -a -size -50k [rootserver ~]# find /etc -name "e*" -o -name "f*"…

前端初学java二(类、多态、接口、内部类、泛型)

目录 类 种类 Javabean类 测试类 工具类 类的初始化 构照函数 新建对象的内存图 static 继承 This Super 虚方法表 Override 修饰符权限 构造代码块 静态代码块 多态 前提 优点 缺点 示例 抽象方法 抽象类 接口 implements 继承 内部类 成员内部类…