前言
这个问题出现在Unity导出的可执行文件发生在需要关闭应用程序时无法正常关闭,只能从任务管理器中直接杀死进程,虽然这一步的目的是关闭程序但无法走正常途径就很奇怪。期间的Bug表现为使用Profile分析并没有内存爆满的情况,使用WinDbg分析后发现报错为0xC000005(这个的形成原因很复杂)所以本人这里并无法判断错误出现在哪里。
项目分析情况
这个项目是在Unity使用海康威视的SDK,当应用程序调用过实时预览再关闭就会出现无法正常关闭的情况。
这里建议在调用海康威视的SDK时增加一个运行日志。
CHCNetSDK32.NET_DVR_SetLogToFile(3, "C:/SdkLogUnity/", true);
//在C盘根目录中新建一个日志文件
以及Unity本身的日志(地址如下)
C:\Users\用户名称\AppData\LocalLow\项目中设置的公司名称\项目名称
这两个虽然无法直接解决这个问题但可以查看是否存在其他没注意的问题
解决方法一
在主要脚本中写入当应用程序退出时的函数
void OnApplicationQuit() //这个函数名为退出时的执行函数
{
Application.Quit();//执行退出
System.Diagnostics.Process.GetCurrentProcess().Kill();//当前杀死进程
}
结论
目前是解决该问题,但采用的方式比较极端,使用杀死进程的函数直接关闭应用程序,希望可以有大佬可以给出更有建设性的意见,不胜感激。
同时,Windows调试这个网址是官网对Unity配置Windbg调试器进行调试的方法。