3.2 KiB
#unity/日常积累
注意,unity的编译选项,需要是IL2CPP 这种 C++ 的编译选项
安装好windows对应的sdk后,一般都会集成windbg调试工具,关键字检索,打开即可
首先打开对应的崩溃Dump文件
然后在命令行中,添加pdb符号表路径,参考
.sympath+ G:\code\unity\testCrash\exe
该指令是会添加,对应路径下,所有的pdb符号表文件
如果顺利加载,以下路径会显示为OK
然后再执行以下指令,就可以定位到,具体的崩溃位置了
.ecxr;kv
对应测试脚本:
如果解析不出来,可以尝试重载指令
.reload
如果要命令行执行,windbg,可以使用,它的脚本模式; 不同参数,分别对应不同的文件和路径,举例说明:
-z
对应的是,崩溃dmp文件,所在的路径;
-y
对应的是,符号表所在路径,如果有多个符号表路径,可以使用 ;
进行隔开,如果路径包含空格,则需要使用引号,引起来;
-logo
对应的是,dmp解析后,输出的文件路径,如果文件已存在,会覆盖
-c
对应的是,windbg启动之后,执行的相关指令,可以是指令,也可以是文本文件,其中包含多条指令;如果只是执行,相关指令,它们之间,需要使用 ;
进行隔开;
需要先 cd
跳转到,windbg.exe所在的文件夹,再打开命令行,执行以下指令
这里测试的是,输出崩溃文件,到D盘的qiuqiuCrash.txt文件,如果不存在这个文件,也会自动创建;
.\windbg.exe -z C:\Users\youro\AppData\Local\Temp\DefaultCompany\testCrash\Crashes\Crash_2024-07-18_011105947\crash.dmp -y G:\code\unity\testCrash\exe -logo D:\qiuqiuCrash.txt -c " .ecxr;kv"
可以看到,记录的log也是正常的
也可以新建.txt脚本文件,用来存储对应脚本
测试脚本,其中 qq
是运行完成后,退出windbg程序即可
.echo ==============start=============
.ecxr
kv
.echo ==============end=============
qq
命令行调用的时候,记得添加 "$<
前缀,然后跟随txt脚本,所在的路径即可,参考windbg命令行脚本
.\windbg.exe -z C:\Users\youro\AppData\Local\Temp\DefaultCompany\testCrash\Crashes\Crash_2024-07-18_011105947\crash.dmp -y G:\code\unity\testCrash\exe -logo D:\qiuqiuCrash.txt -c "$<D:\TestWindbgScript.txt"
这里脚本存放的位置,也是D盘
自动运行脚本后,windbg也是自动退出,log文件也提示,重新加载了
报错的log信息,也还是正常的
参考链接:
https://cloud.tencent.com/developer/article/2408909
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/debuggercmds/windbg-command-line-preview