#unity/日常积累 注意,unity的编译选项,需要是IL2CPP 这种 C++ 的编译选项 ![[Pasted image 20240718092243.png]] 安装好windows对应的sdk后,一般都会集成windbg调试工具,关键字检索,打开即可 ![[Pasted image 20240718092045.png]] 首先打开对应的崩溃Dump文件 ![[Pasted image 20240718091525.png]] 然后在命令行中,添加pdb符号表路径,参考 ``` .sympath+ G:\code\unity\testCrash\exe ``` 该指令是会添加,对应路径下,所有的pdb符号表文件 ![[Pasted image 20240718091842.png]] 如果顺利加载,以下路径会显示为OK ![[Pasted image 20240718092518.png]] 然后再执行以下指令,就可以定位到,具体的崩溃位置了 ``` .ecxr;kv ``` ![[Pasted image 20240718092132.png]] 对应测试脚本: ![[Pasted image 20240718092149.png]] 如果解析不出来,可以尝试重载指令 ``` .reload ``` ![[Pasted image 20240718092358.png]] 如果要命令行执行,windbg,可以使用,它的脚本模式; 不同参数,分别对应不同的文件和路径,举例说明: `-z` 对应的是,崩溃dmp文件,所在的路径; `-y` 对应的是,符号表所在路径,如果有多个符号表路径,可以使用 `;` 进行隔开,如果路径包含空格,则需要使用引号,引起来; `-logo` 对应的是,dmp解析后,输出的文件路径,如果文件已存在,会覆盖 `-c` 对应的是,windbg启动之后,执行的相关指令,可以是指令,也可以是文本文件,其中包含多条指令;如果只是执行,相关指令,它们之间,需要使用 `;` 进行隔开; 需要先 `cd` 跳转到,windbg.exe所在的文件夹,再打开命令行,执行以下指令 ![[Pasted image 20240718224217.png]] 这里测试的是,输出崩溃文件,到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也是正常的 ![[Pasted image 20240718224402.png]] 也可以新建.txt脚本文件,用来存储对应脚本 ![[Pasted image 20240718225129.png]] 测试脚本,其中 `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 "$