当前位置: 首页 > news >正文

内蒙网站建设seo优化学it什么培训机构好

内蒙网站建设seo优化,学it什么培训机构好,广东省自然资源厅陈光荣,wordpress动漫模板一、常见故障介绍  最近在开发相机项目(项目细节由于公司保密就不介绍了),程序运行5个来月以来首次出现msvcr100.dll故障等问题,于是乎开始了分析之路,按照度娘上的一顿操作,期间也是出现了各种不一样的问…

一、常见故障介绍  

  最近在开发相机项目(项目细节由于公司保密就不介绍了),程序运行5个来月以来首次出现msvcr100.dll故障等问题,于是乎开始了分析之路,按照度娘上的一顿操作,期间也是出现了各种不一样的问题,现总结了遇到的问题如:

1、MSVCR100.dll/MSVCR100D.dll/MSVCP100.dll/MSVCP100D.dll问题

  问题事件名称: APPCRASH

  故障模块名称: MSVCR100.dll

2、R6010错误

  现场遇到的情况基本都是这两类

二、故障排查

1、静心思考

  主要说一下我走过的历程,心酸只有自己知道,排查问题难免浮躁,但一定要沉得住,浮躁主要有以下几点:

  • 程序明明在自己机器上运行的好好的在客户机器上就会出问题;

  • 程序明明试着好好的,可你一离开就出现问题;

  • 程序连续运行好几个月版本都稳定了,可突然出问题,换电脑又复现不出来;

  • 连续处理一段时间后仍然没有结果,客户领导天天催。

2、检查库

  • 1、如果新打包的程序提示缺少MSVCR100.dll、MSVCP100.dll”或者“MSVCR100d.dll\MSVCP100d.dll”等类似错误信息,请从源机器或者网上下载该库拷贝到目标机器,库分32位和64位(跟自己操作系统有关),32拷贝到C:\Windows\System32,64位拷贝到C:\Windows\SysWOW64,记住库一定要统一版本,不要从别的机器东拼西凑,以一个机器为准;

  • 2、程序发布时最好将所需要的库也一并打包,在这我以vs编译器为例,可以从vs安装目录里拷贝MSVCR100.dll等相关运行库,记得区分32或者64位版本,目录如下:

  • 3.如果以上两步完成,程序重启后,还会出现类似问题,则继续往下排查,我给现场换完所有库之后,出现了R6010问题引起程序宕机

3、排查代码

1)、代码层面检查

  以上若还没解决问题,此时一定不要再纠结库(不要以为库版本不对),一定是你代码的问题,检查代码着重检查

  • 1.非法指针访问和内存泄漏

  • 2.设置的指针范围跟你运行的不对

  • 3.指针访问内存越界出现问题。

  • 4.因为不支持中文。

  • 5.内存不够分配

  • 6.多线程访问资源出的问题。

  • 7.检查exe和dll是否混用的不同版本的crt

代码检查出异常更新版本后若问题解决皆大欢喜,若还没有解决,请接着往下走(本人就属于后者)。

2)、生成dump文件

  一定要正视你的代码,C++系统崩溃无非就是内存访问无效、无效对象、堆栈溢出、空指针调用等常见的问题,当然有些问题不是立马能复现,它需要一定的条件,而这个条件它很复杂又由许多因素所制约;

  Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中,Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg、VS打开,当程序崩溃时会生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用,dump文件生成的方式如下:

(a)通过任务管理器生成

打开任务管理器,找到对应的进程,右击,选择创建转储文件

生成的文件路径如下:

生成的转储文件可以通过VS打开,但是正常运行的程序生成.DMP文件并没有什么大的作用,上述的方法要求在程序崩溃时并不直接退出时才可以使用,但是一般程序都是粗鲁的退出,所以这种方法适用于特定场合。

(b)编写代码生成

  一定要生成debug版本程序

  Windows提供了SetUnhandledExceptionFilter函数,MSDN中描述为:

Issuing SetUnhandledExceptionFilter replaces the existing top-level exception filter for all existing and all future threads in the calling process.

用于当程序遇到未经处理的异常(主要指非指针造成)导致程序崩溃宕机时的异常接受处理,该函数必须在异常可能发生之前调用才有效,我们可以在该函数中生成dump文件,以方便我们调试,代码网上很多,我贴出一部分(大佬不嫌弃请留言),在程序崩溃后会生成dump文件

int GenerateMiniDump(HANDLE hFile, PEXCEPTION_POINTERS pExceptionPointers, PWCHAR pwAppName)
{BOOL bOwnDumpFile = FALSE;HANDLE hDumpFile = hFile;MINIDUMP_EXCEPTION_INFORMATION ExpParam;typedef BOOL(WINAPI * MiniDumpWriteDumpT)(HANDLE,DWORD,HANDLE,MINIDUMP_TYPE,PMINIDUMP_EXCEPTION_INFORMATION,PMINIDUMP_USER_STREAM_INFORMATION,PMINIDUMP_CALLBACK_INFORMATION);MiniDumpWriteDumpT pfnMiniDumpWriteDump = NULL;HMODULE hDbgHelp = LoadLibrary(L"DbgHelp.dll");if (hDbgHelp)pfnMiniDumpWriteDump = (MiniDumpWriteDumpT)GetProcAddress(hDbgHelp, "MiniDumpWriteDump");if (pfnMiniDumpWriteDump){if (hDumpFile == NULL || hDumpFile == INVALID_HANDLE_VALUE){//TCHAR szPath[MAX_PATH] = { 0 };TCHAR szFileName[MAX_PATH] = { 0 };//TCHAR* szAppName = pwAppName;TCHAR* szVersion = L"v1.0";TCHAR dwBufferSize = MAX_PATH;SYSTEMTIME stLocalTime;GetLocalTime(&stLocalTime);//GetTempPath(dwBufferSize, szPath);//wsprintf(szFileName, L"%s%s", szPath, szAppName);CreateDirectory(szFileName, NULL);wsprintf(szFileName, L"%s-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp",//szPath, szAppName, szVersion,szVersion,stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay,stLocalTime.wHour, stLocalTime.wMinute, stLocalTime.wSecond,GetCurrentProcessId(), GetCurrentThreadId());hDumpFile = CreateFile(szFileName, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_WRITE | FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);bOwnDumpFile = TRUE;OutputDebugString(szFileName);}if (hDumpFile != INVALID_HANDLE_VALUE){ExpParam.ThreadId = GetCurrentThreadId();ExpParam.ExceptionPointers = pExceptionPointers;ExpParam.ClientPointers = FALSE;pfnMiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),hDumpFile, MiniDumpWithDataSegs, (pExceptionPointers ? &ExpParam : NULL), NULL, NULL);if (bOwnDumpFile)CloseHandle(hDumpFile);}}if (hDbgHelp != NULL)FreeLibrary(hDbgHelp);return EXCEPTION_EXECUTE_HANDLER;
}LONG WINAPI ExceptionFilter(LPEXCEPTION_POINTERS lpExceptionInfo)
{if (IsDebuggerPresent()){return EXCEPTION_CONTINUE_SEARCH;}return GenerateMiniDump(NULL, lpExceptionInfo, L"test");
}

(c)调试dump文件

  终于在慢慢的等待中,现场程序崩溃,预期生成了dump文件,此时我们将dump文件拷贝到我们当时编译的debug版本可执行程序的同级目录下,注意pdb文件必须也在此目录

用vs打开dmp文件并点击使用仅限本机进行调试

出现异常时的弹窗即UnhandledExceptionFilter为默认的异常处理器工作产生的会出现中断的提示框,此时点击中断

右下角会弹出堆栈信息

双击有问题的一行,会出现弹窗,再选择代码工程所在目录(sln的目录),即可定位到有问题的那一行

分析错误,加上异常保护,重新生成版本,问题解决,收工!

作者:灼光

出处:https://www.cnblogs.com/laiyingpeng

http://www.yidumall.com/news/87257.html

相关文章:

  • wordpress建站视频郑州关键词排名外包
  • 黄石做网站公司2021百度新算法优化
  • 免费动态网站下载专区网页设计制作网站素材
  • 建筑公司网站建设企业关键词排名优化网址
  • 域名注册网站 不认证职业培训机构
  • 网站建设wuliankj提升seo搜索排名
  • app设计大赛太原seo外包公司
  • 城子河网站建设互联网营销培训班
  • 公司建一个网站要多少钱石家庄seo推广公司
  • 电子商务网站建设与规划营销策划公司排名
  • 进下加强新闻宣传网站建设软文大全800字
  • 照片做视频ppt模板下载网站四川旅游seo整站优化
  • 河北邢台wap网站建设小程序开发公司前十名
  • 网站设计规划书例子windows系统优化软件排行榜
  • 有了网站 怎么做排名优化推特是谁的公司
  • 科技有限公司网站建设策划书谷歌下载安装
  • 如何创建blog页面wordpressseo就是搜索引擎广告
  • 在线支付网站制作免费的个人网站怎么做
  • 规划和设计一个网站多地优化完善疫情防控措施
  • 刚做的单页网站怎么预览好视通视频会议app下载安装
  • 昆明做网站优化哪家好软件怎么推广
  • 微信平台与微网站开发广州做seo公司
  • 长沙企业网站建设多少钱广州市新闻发布
  • 网站建设公司主营业务郑州短视频代运营
  • 做泰迪狗网站的意义网络推广方法怎么做
  • 乌海品牌网站建设seo排名技术软件
  • 不用ftp可以做网站吗手机制作网站的软件
  • 公司做网站让我们销售百度最新收录方法
  • 珠海 电商 网站建设关键词排名优化教程
  • 网站定制兴田德润实力强百度关键词快速排名