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

网站建设与管理好过吗wordpress表excel插件

网站建设与管理好过吗,wordpress表excel插件,wordpress邮箱订阅,营销网站定制背景 随着软件代码量的增加,软件崩溃闪退的肯能行越来越大,其中一些是难以复现的,比如访问了访问了非法地址、被操作系统杀死等。 为此,在软件出现闪退情况时,尽可能多的记录闪退发生时信息,对排查闪退原…

背景

随着软件代码量的增加,软件崩溃闪退的肯能行越来越大,其中一些是难以复现的,比如访问了访问了非法地址、被操作系统杀死等。

为此,在软件出现闪退情况时,尽可能多的记录闪退发生时信息,对排查闪退原因是非常有帮助的。

实现

因为闪退发生时软件已经不在运行了,因此需要在闪退前就告诉操作系统闪退后需要执行的操作,在Qt中就是在QApplicationexec()前调用操作系统提供的接口,注册闪退后的处理函数。

我们以Windows平台为例,在Windows平台,时利用SetUnhandledExceptionFilter函数实现异常(闪退)处理函数的注册的。

简单代码如下:

#include <QApplication>#ifdef Q_OS_WIN
#include <windows.h>
#include <psapi.h>
#include <DbgHelp.h>
#include <fstream>
#include <sstream>#pragma comment(lib, "DbgHelp.lib")
LONG WINAPI windowsCrashHandler(EXCEPTION_POINTERS* ex) {SYSTEMTIME time;GetLocalTime(&time);char logName[256];// 文件名格式crash_yyyymmdd_hhmmss.logsprintf(logName, "crash_%04d%02d%02d_%02d%02d%02d.log",time.wYear, time.wMonth, time.wDay,time.wHour, time.wMinute, time.wSecond);// 打开日志文件std::ofstream logFile(logName);if (!logFile.is_open()) return EXCEPTION_EXECUTE_HANDLER;// 记录异常信息logFile << "=== Exception: "<< ex->ExceptionRecord->ExceptionCode<<" ==="<< std::endl;// 记录内存占用(Windows)MEMORYSTATUSEX statex;statex.dwLength = sizeof(statex);if (GlobalMemoryStatusEx(&statex)) {logFile << "总内存:" << statex.ullTotalPhys / (1024 * 1024) << " MB" << std::endl;}PROCESS_MEMORY_COUNTERS pmc;GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));logFile << "内存占用: "<< pmc.WorkingSetSize / (1024 * 1024)<< " MB" << std::endl;logFile << "Error Code: 0x" << std::hex << ex->ExceptionRecord->ExceptionCode << std::endl;// 获取调用堆栈HANDLE process = GetCurrentProcess();HANDLE thread = GetCurrentThread();SymInitialize(process, NULL, TRUE);  // 初始化符号表// 遍历堆栈帧STACKFRAME64 stackFrame = {{0}};stackFrame.AddrPC.Offset = ex->ContextRecord->Rip;  // x86 用 Eip, x64 用 RipstackFrame.AddrPC.Mode = AddrModeFlat;stackFrame.AddrStack.Offset = ex->ContextRecord->Rsp;  // x86 用 Esp, x64 用 RspstackFrame.AddrStack.Mode = AddrModeFlat;stackFrame.AddrFrame.Offset = ex->ContextRecord->Rbp;  // x86 用 Ebp, x64 用 RbpstackFrame.AddrFrame.Mode = AddrModeFlat;DWORD imageType;
#ifdef _M_IX86imageType = IMAGE_FILE_MACHINE_I386;
#elif _M_X64imageType = IMAGE_FILE_MACHINE_AMD64;
#endiflogFile << "调用堆栈:" << std::endl;int frameNum = 0;while (StackWalk64(imageType, process, thread, &stackFrame, ex->ContextRecord,NULL, SymFunctionTableAccess64, SymGetModuleBase64, NULL)) {// 获取符号信息BYTE symbolBuffer[sizeof(SYMBOL_INFO) + 256] = {0};SYMBOL_INFO* symbol = (SYMBOL_INFO*)symbolBuffer;symbol->SizeOfStruct = sizeof(SYMBOL_INFO);symbol->MaxNameLen = 255;DWORD64 displacement = 0;if (SymFromAddr(process, stackFrame.AddrPC.Offset, &displacement, symbol)) {logFile << "[" << frameNum << "] " << symbol->Name << std::endl;} else {logFile << "[" << frameNum << "] Unknown Address" << std::endl;}frameNum++;}// 清理符号表SymCleanup(process);logFile.close();// 退出程序return EXCEPTION_EXECUTE_HANDLER;
}
#endifint main(int argc, char *argv[])
{#ifdef Q_OS_WIN// Windows 注册异常(闪退)处理函数SetUnhandledExceptionFilter(windowsCrashHandler);
#endifQApplication a(argc, argv);return a.exec();
}

这样在程序出现闪退后,就可以看到闪退时计算机内存的占用情况以及引起闪退的调用堆栈。


文章转载自:

http://GUOBcY9C.gnbfj.cn
http://X8C6Ji3a.gnbfj.cn
http://41IGoqG0.gnbfj.cn
http://F5NSVKxi.gnbfj.cn
http://CR87mybr.gnbfj.cn
http://c3Vpmf9t.gnbfj.cn
http://BQSsyhDR.gnbfj.cn
http://YgC3Mwqh.gnbfj.cn
http://IwnrPrC5.gnbfj.cn
http://BxbwiJGO.gnbfj.cn
http://ILCSe1mr.gnbfj.cn
http://k8AVKmq8.gnbfj.cn
http://5U72xVZJ.gnbfj.cn
http://R78oBwrf.gnbfj.cn
http://0PMQmkpP.gnbfj.cn
http://uIMTemwI.gnbfj.cn
http://TRl0uXWr.gnbfj.cn
http://K3Vk5HfN.gnbfj.cn
http://aJHCoC8W.gnbfj.cn
http://QGj07zGL.gnbfj.cn
http://N0tcJJlH.gnbfj.cn
http://gQ3GXpRl.gnbfj.cn
http://Cphp2FMH.gnbfj.cn
http://pfKdRW8h.gnbfj.cn
http://WNWaMC8a.gnbfj.cn
http://0NlKIITq.gnbfj.cn
http://9TmxUpzn.gnbfj.cn
http://gEXqtReN.gnbfj.cn
http://hc5apxAL.gnbfj.cn
http://LzOlmias.gnbfj.cn
http://www.dtcms.com/wzjs/659767.html

相关文章:

  • 网站为什么网页打不开怎么办南京知名网站建设公司
  • 网站定向搜索怎么做找券网站
  • 广州金融网站建设网络销售型网站有哪些
  • 不属于网站后期维护长安区建设局官网站站
  • 网站开发需求统计wordpress 主题 改名
  • wordpress抽奖源码淘宝seo对什么内容优化
  • 咸阳市建设局网站前端开发培训机构有哪些
  • 免费网站注册com树莓派做博客网站
  • 学院网站建设推进会深圳市营销型网站建设
  • 建设外围彩票网站西安网站优化公司
  • dede怎么设置wap网站东莞住建局电话是多少
  • 51制作工厂网站在线观看无需选择莱芜人才网招聘网
  • 深圳网站优化运营最好的免费cms系统
  • 最专业的网站建设推广无锡网站建设价格
  • 模块网站需要多少钱wordpress getterm
  • 网站撤销备案百度收录教程
  • 做网站还是app好网络营销效果评估的作用有哪些
  • 建设 展示型企业网站中文无版权图片网站
  • 简述商务网站建设步骤拍卖行 网站建设
  • 美食网站开发的难点怎样做网站步骤
  • 中山做公司网站弹簧东莞网站建设
  • 网站上做值机的app网站建设咨询中心
  • 免费做logo网站常州建网站
  • 金牛区网站建设微商平台
  • 太原网站seo外包网站模板出售
  • 深圳做网站 创同盟企业网站建设 深圳
  • 哈尔滨建站系统报价北京网站搭建服务
  • vs怎么做网站的首页家装企业网站系统下载
  • 做网站得每年续费吗电子商务网站规书
  • 电影网站如何优化php html转 wordpress