3.7 KiB
title, date, excerpt, tags, rating
title | date | excerpt | tags | rating |
---|---|---|---|---|
UE符号服务器搭建笔记 | 2022-09-13 10:56:50 | ⭐⭐ |
前言
主要是为了解决在美术不用下载调试符号的情况下,引擎崩溃时可以准确定位到代码。
PDB文件主要存储了调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等,但是我们算了一下,整个项目的pdb文件加起来有30多个G,每天编辑器要编10个版本,导致拉pdb到本地的成本也很高,会浪费很多时间。
思路为:
搭建一个pdb服务器(同符号服务器一个意思这里),每次做好版本的时候,将pdb都传到这台服务器上,在策划机器上发生crash的时候,ue才会用dbghelp去解析dump文件,dbghelp会拉起symsrv.dll 去pdb服务器取得需要的pdb文件拉到本地(也可以不拉),从而进一步实现对dump中的地址解析,变成文件名,函数名,行号等详细信息
参考文章:
- ue4 符号服务器搭建:https://zhuanlan.zhihu.com/p/563637510
- 微软官方文档
流程
- 安装pdb相关工具。
- 我们需要symstore命令,要做的是安装Debugging Tools for Windows 官方下载地址
- symstore的默认安装位置为:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
- 搭建pdb服务器。
- 支持本地路径、共享与Https方式。
- 使用symastore上传pdb。
symstore.exe add /r /f H:\MyGame\Engine\Binaries\Win64 /s \\sanhao-NB0\pdbShare /t ACM /z pri
- #微软文档中的symstore案例
- 增加
DefaultEditorPerProjectUserSettings.ini
设置。
[/Script/UnrealEd.CrashReporterSettings]
RemoteStorage=\\sanhao-NB0\pdbShare
DownstreamStorage=D:\PDBTest //这个是本地缓存pdb文件的路径
- 在美术的机器上的
C:\Windows\System32
目录下放置symsrv.dll
。与symstore同路径。 - 在美术的机器上添加环境变量:`_NT_SYMBOL_PATH srvd:\PDBTest\sanhao-NB0\pdbShare
- 符号服务器的空间是有限的,需要定期删除过期文件,删除需要的命令是agestore。
微软文档中的SymStore案例
symstore add /r /f \\largeapp\appserver\bins\*.* /s \\testdir\symsrv /t "Large Application" /v "Build 432" /c "Sample add"
- `symstore add /r /p /f \BuildServer\BuildShare\3790free\symbols*.* /s \sampledir\symsrv /t "Windows Server 2003" /v "Build 3790 x86 free" /c "Sample add"
symstore add /r /p /f \\BuildServer\BuildShare\3790Chk\symbols\*.* /s \\sampledir\symsrv /t "Windows Server 2003" /v "Build 3790 x86 checked" /c "Sample add"
微软文档中的SymSrv案例
o use SymSrv with a symbol store on \mybuilds\mysymbols, set the following symbol path:
set _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols
To set the symbol path so that the debugger will copy symbol files from a symbol store on \mybuilds\mysymbols to your local directory c:\localsymbols, use:
set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols
To set the symbol path so that the debugger will copy symbol files from a symbol store on \mybuilds\mysymbols to the default downstream store (typically c:\debuggers\sym), use:
set _NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols
To use a cascading store, set the following symbol path:
set _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer