UE4调试手段:主动崩溃与“.pdb”解析“.dmp”文件

news2024/9/18 15:22:45

主动崩溃

尝试了一些做法,发现 check(false) 对于Development配置而言,是有效果的,代码如下:

// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
    Super::BeginPlay();

    check(false); // 尝试用这个来主动崩溃
}

以Windows配置出包,并运行,能够成功崩溃:

VS解析出“.dmp”崩溃堆栈

在UE4中,PDB文件是一种调试符号文件,用于在程序崩溃或调试时提供有关代码的详细信息。PDB代表“Program Database”。

PDB文件包含了编译后的二进制可执行文件(如游戏客户端或服务器)的调试信息,包括函数、变量、类型信息以及源代码的映射关系。它与编译器生成的可执行文件相对应,可以帮助调试器在崩溃或调试时将二进制代码映射回源代码。

使用PDB文件,开发者可以在调试过程中获得更多的上下文信息,例如函数调用堆栈、变量的值和类型等。这对于定位和修复代码中的问题非常有帮助,特别是在复杂的代码库中。

在UE4中,当你构建项目时,编译器会生成PDB文件。这些PDB文件通常与生成的可执行文件一起分发给测试人员或其他开发者,以便在调试过程中使用。请注意,PDB文件通常比可执行文件本身要大,因为它们包含了额外的调试信息。

下面是解析出崩溃堆栈的实操做法:

一、使用Everything 在Demo工程中搜索到pdb如下:

{我的工程路径}\Binaries\Win64\{我的工程名}.pdb

二、找到崩溃文件:

{我的打包输出路径}\WindowsNoEditor\{工程名}\Saved\Crashes\UE4CC-Windows-9A446C114FA6E8653F612791A99C2D3E_0000\UE4Minidump.dmp

三、用VS打开我的工程.sln

四、VS中看到“仅限本机进行调试”,但点击前,需要先在VS的界面中点击“手动选择PDB”(sorry我没有截到图),并选择第一步骤里找到的pdb。再点击下图红框处

五、能够找到错误的代码:

日志中包含堆栈信息(未成功)

我希望直接在日志中打印出堆栈信息,这样就不需要主动崩溃了,但没有成功。

根据 https://zhuanlan.zhihu.com/p/374231773  、 虚幻引擎应用实例分享(十):虚幻的断言 | indienova 独立游戏  、  https://hackmd.io/@NotYet/SypDZX_SL   的介绍,使用FDebug::DumpStackTraceToLog(TEXT("日志的自定义开头H")),含义是以H字串开头的日志会自动打印堆栈,代码如下:

bool FPakPlatformFile::Mount(const TCHAR* InPakFilename, uint32 PakOrder, const TCHAR* InPath /*= NULL*/, bool bLoadIndex /*= true*/)
{
    // 将 LogPakFile 开头的信息都打印出堆栈
    FDebug::DumpStackTraceToLog(TEXT("LogPakFile"));

    // 我希望有堆栈的日志:
    UE_LOG(LogPakFile, Error, TEXT("watch trace_info2 %s  \n \"%s\" until encryption key '%s' becomes available"),  InPakFilename, InPath);

实际运行时,看到都是Unknown。

Error: LogPakFile
Error: 
Error: [Callstack] 0x00007ff7f17f9452 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f17faad1 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f17f249e DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7eeb03adc DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f1a675c6 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f2bb6ccf DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f1ffe967 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f2b63ede DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f2a8d096 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f2a30241 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f201ef5b DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7ee186617 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7ee19d0b9 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7ee1a1c55 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7ee1a1e6a DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7ee1c4144 DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ff7f3c53ade DeltaForce.exe!UnknownFunction []
Error: [Callstack] 0x00007ffc077e7374 KERNEL32.DLL!UnknownFunction []
Error: [Callstack] 0x00007ffc08d3cc91 ntdll.dll!UnknownFunction []

暂不深究。

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

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

相关文章

RAG调研

一 : RAG解决的问题 1.1 LLM 的局限 幻觉 知识过期 推理过程不透明,不可追踪 1.2 RAG介绍 检索增强生成(RAG)是一种使用外部知识库辅助文本生成的技术。它结合了检索与生成,通过访问外部数据库检索得到有关的信息&…

vue的基础知识总结(1)

目录 一.什么是Vue? 二.基于脚手架创建就前端工程: 三.Vue工程结构以及组件: 1.Vue项目结构: 2.Vue组件: 四.Vue基本使用方式: 1.文本插值{{}}: 2.属性绑定v-bind: 3.事件绑…

常用的项目管理软件有哪些?东成电动工具用 PowerProject 打造先进项目管理平台

近日,国内最大的专业电动工具制造企业:江苏东成电动工具有限公司与北京奥博思软件技术有限公司达成合作,借助 PowerProject 项目管理系统,全面提升项目管理效率,满足企业多场景、多角色的全周期项目管理,激…

torch._dynamo 理解(2)——Backend

0 概述 TorchDynamo 是一个 Python 级别的即时 (JIT) 编译器,旨在让未修改的 PyTorch 程序运行得更快。它通过 Python Frame Evaluation Hooks(Python 框架评估钩子)来实现这一目标,以便在运行时动态地生成和优化代码。这使得 To…

借助Aspose.html控件, 将SVG 转PNG 的 C# 图像处理库

Aspose.HTML for .NET 不仅提供超文本标记语言 ( HTML ) 文件处理,还提供流行图像文件格式之间的转换。您可以利用丰富的渲染和转换功能将SVG文件渲染为PNG、JPG或其他广泛使用的文件格式。但是,我们将使用此C# 图像处理库以编程方式在 C# 中将 SVG 转换…

VBA 颜色

1. ColorIndex 1-1. ColorIndex的值是从1到56。 Option ExplicitConst MAX_COL As Long 8 Const MAX_ROW As Long 2 Const START_ROW As Long 2 Const START_COL As Long 2Sub Color()Dim i As IntegerDim intRow As Long, intCol As LongCells.SelectSelection.ClearCon…

redis Ubuntu安装问题

报错1:Package pkg-config is not available, but is referred to by another package /bin/sh: 1: pkg-config: not found(没有安装pkg-config) sudo apt-get install pkg-config /bin/sh: 1: cc: not found(没有安装gcc环境&am…

年过30年程序员,到底要不要考虑搞点副业

一、前言 作为一名年过三十的程序员,我深刻体会到了职场的残酷和不确定性。在这个技术日新月异的时代,我们不仅要在专业领域深耕细作,更要敏锐地捕捉互联网的风口,以确保自己不被时代淘汰。程序员的黄金年龄似乎被限定在35岁之前…

《Milvus Cloud向量数据库指南》——ChatGLM:从GLM-130B到GLM-4

ChatGLM:从GLM-130B到GLM-4的跨越:智谱AI在通用人工智能领域的深度探索与实践 在人工智能的浩瀚星空中,智谱AI如同一颗璀璨的新星,以其独特的技术视角和坚定的创新步伐,在通用人工智能(AGI)的征途上留下了深刻的足迹。技术生态总监贾伟在近期的一次分享中,不仅为我们描…

蓝牙+LoRa+北斗RTK融合定位系统介绍

蓝牙LoRa北斗RTK定位系统是新锐科创自主研发的融合定位系统,该系统利用融合定位技术将当今主流的室内外定位技术有机融合,从而满足不同场景定位需求。 蓝牙LoRa北斗RTK定位系统是一种室内外高精度人员定位管理系统,具有功耗低、部署简单、实时…

【计算机视觉学习之CV2图像操作实战:车牌识别1】

基于Sobel算子的车牌识别 步骤如下 高斯模糊图片灰度化Sobel算子图像二值化闭操作膨胀腐蚀中值滤波查找轮廓判断车牌区域 import cv2 # 读取图片 rawImage cv2.imread("car1.jpg") # 高斯模糊,将图片平滑化,去掉干扰的噪声 image cv2.Gau…

蓄势赋能 数智化转型掌舵人百望云杨正道荣膺“先锋人物”

2024年,在数据与智能的双涡轮驱动下,我们迎来了一个以智能科技为核心的新质生产力大爆发时代。在数智化浪潮的推动下,全球企业正站在转型升级的十字路口。在这个充满变革的时代,企业转型升级的道路充满挑战,但也孕育着…

【OceanBase DBA早下班系列】—— obdiag 收集的 SQL Monitor Report 如何解读

1. 前言 前几天写了一篇博客,告诉大家在遇到慢SQL或者复杂的并行SQL的时候怎么高效的来收集【SQL Monitor Report】,上一篇博客的链接: OceanBase 社区 ;发出去后有不少问我这份报告咋解读。今天再出一篇博客给大家介绍下如何解…

【股票价格跨度】python刷题记录

R3-栈和队列-单调栈 有个小思路:如果用栈的话,比如a,b在c前面,然后查找c的跨度的时候,往回搜索,如果b比c小,那就可以把b的跨度加到c上,否则,继续往回查找到a----(思路貌似…

AI画笔,你的创意伙伴:6款最佳AI绘画工具推荐

在这个无限可能的时代,一个优秀的人工智能绘画软件不仅可以打破传统绘画方法的束缚,而且可以让每个热爱艺术的人都体验到创作的乐趣。那么,什么样的人工智能绘画软件才是优秀的呢?什么样的人工智能绘画软件才能生成超逼真的AI绘画…

(十)联合概率数据互联原理及应用(JPDA)

目录 前言 一、JPDA原理及算法步骤 (一)算法步骤 1.确认矩阵计算 2.确认矩阵拆分 3.互联概率计算 4.状态及协方差更新 二、仿真验证 (一)模型构建 (二)仿真结果 总结 引用文献 前言 本文主要针…

世界上速度最快的超级计算机推导出超级BC8钻石配方

BC8 超级钻石比任何已知材料都要坚硬,但它们很可能只存在于巨型系外行星的内核中。现在,世界上最强的超级计算机"前沿"已经揭开了它们形成的秘密,这一发现可能会导致在地球上生产它们。 钻石不仅是夺人眼球的珠宝,而且在…

致敬万物的解释者:丹尼尔・丹尼特(1942~2024)

2024 年 4 月 19 日,全世界最受欢迎的哲学家之一丹尼尔・丹尼特在缅因州波特兰去世。他被无数人称作是自己的哲学英雄,他的观点像一把利刃,在心智和意识领域无出其右。 巨星陨落,思想长存。让我们一起回顾他的生平,聆…

AGI|如何用Open WebUI和Ollama在本地运行大型语言模型?

在某AI产品发布会上,我们需要演示在个人PC上运行大模型的能力。为了实现这一目标,我们进行了深入的市场调研和技术评估,最终选择了Open WebUI和Ollama作为演示的核心工具。 目录 一、介绍 二、部署 三、代码展示 一、介绍 什么是Ollama …

前端代码混淆加密(使用Terser、WebpackObfuscator)

零、相关技术及版本号 "vue": "2.6.12", "vue/cli-service": "4.4.6", "javascript-obfuscator": "^4.1.1", "terser-webpack-plugin": "^4.2.3", "vue-template-compiler": &quo…