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

新网站怎么快速收录必做手机视频网站设计

新网站怎么快速收录必做,手机视频网站设计,单页手机网站源码,广州sem代运营推广公司windows下程序有时突然崩溃了#xff0c;偶发性的崩溃很难找。于是就需要保存崩溃时的dump信息了。 下面是关于如何生成dmp文件的代码。 头文件 #pragma once #include windows.h #include DbgHelp.h #include stdlib.h #include string #pra…windows下程序有时突然崩溃了偶发性的崩溃很难找。于是就需要保存崩溃时的dump信息了。 下面是关于如何生成dmp文件的代码。 头文件 #pragma once #include windows.h #include DbgHelp.h #include stdlib.h #include string #pragma comment(lib, dbghelp.lib)namespace FrameworkMiniDump {std::wstring GetTimeNowString();std::string WStringToString(const std::wstring str);std::wstring StringToWString(const std::string str);std::string getexepath();inline BOOL IsDataSectionNeeded(const WCHAR* pModuleName);inline BOOL CALLBACK MiniDumpCallback(PVOID pParam,const PMINIDUMP_CALLBACK_INPUT pInput,PMINIDUMP_CALLBACK_OUTPUT pOutput);inline void CreateMiniDump(PEXCEPTION_POINTERS pep, LPCTSTR strFileName);LONG __stdcall MyUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo);void DisableSetUnhandledExceptionFilter();// 此函数一旦成功调用之后对 SetUnhandledExceptionFilter 的调用将无效void InitMinDump(); }   源文件 #include MiniDump.h #include iostream #include ctime #include stringnamespace FrameworkMiniDump {std::wstring GetTimeNowString(){time_t rawtime;struct tm * timeinfo;wchar_t buffer[80];time(rawtime);timeinfo localtime(rawtime);//wcsftime(buffer, sizeof(buffer), L%d-%m-%Y %H:%M:%S, timeinfo);wcsftime(buffer, sizeof(buffer), L%d-%m-%Y-%H-%M-%S, timeinfo);std::wstring str(buffer);return str;}std::wstring StringToWString(const std::string str){ #if defined(WIN32)size_t sz str.length();int nd MultiByteToWideChar(CP_ACP, 0, str[0], sz, NULL, 0);std::wstring ret(nd, 0);int w MultiByteToWideChar(CP_ACP, 0, str[0], sz, ret[0], nd);if (str.length() ! sz) {throw std::exception(StringToWString Err);}return ret; #elseconst char* p str.c_str();size_t len str.length();size_t sz len * sizeof(wchar_t);wchar_t* tp new wchar_t[sz];size_t w mbstowcs(tp, p, sz);if (w ! len) {delete[] tp;throw std::exception(StringToWString Err);}std::wstring ret(tp);delete[] tp;return ret; #endif}std::string WStringToString(const std::wstring str){size_t sz str.length(); #if defined(WIN32)int nd WideCharToMultiByte(CP_ACP, 0, str[0], sz, NULL, 0, NULL, NULL);std::string ret(nd, 0);int w WideCharToMultiByte(CP_ACP, 0, str[0], sz, ret[0], nd, NULL, NULL);/*if (ret.length() ! sz) {throw std::exception(WStringToString Err);}*/return ret; #elseconst wchar_t* p str.c_str();char* tp new char[sz];size_t w wcstombs(tp, p, sz);if (w ! sz) {delete[] tp;throw std::exception(WStringToString Err);}std::string ret(tp);delete[] tp;return ret; #endif}std::string getexepath(){wchar_t result[MAX_PATH];std::wstring wstr std::wstring(result, GetModuleFileName(NULL, result, MAX_PATH));return WStringToString(wstr);}inline BOOL IsDataSectionNeeded(const WCHAR* pModuleName){if (pModuleName 0){return FALSE;}WCHAR szFileName[_MAX_FNAME] L;_wsplitpath(pModuleName, NULL, NULL, szFileName, NULL);if (_wcsicmp(szFileName, std::wstring(Lntdll).c_str()) 0)return TRUE;return FALSE;}inline BOOL CALLBACK MiniDumpCallback(PVOID pParam,const PMINIDUMP_CALLBACK_INPUT pInput,PMINIDUMP_CALLBACK_OUTPUT pOutput){if (pInput 0 || pOutput 0)return FALSE;switch (pInput-CallbackType){case ModuleCallback:if (pOutput-ModuleWriteFlags ModuleWriteDataSeg)if (!IsDataSectionNeeded(pInput-Module.FullPath))pOutput-ModuleWriteFlags (~ModuleWriteDataSeg);case IncludeModuleCallback:case IncludeThreadCallback:case ThreadCallback:case ThreadExCallback:return TRUE;default:;}return FALSE;}inline void CreateMiniDump(PEXCEPTION_POINTERS pep, LPCTSTR strFileName){HANDLE hFile CreateFile(strFileName, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if ((hFile ! NULL) (hFile ! INVALID_HANDLE_VALUE)){MINIDUMP_EXCEPTION_INFORMATION mdei;mdei.ThreadId GetCurrentThreadId();mdei.ExceptionPointers pep;mdei.ClientPointers NULL;MINIDUMP_CALLBACK_INFORMATION mci;mci.CallbackRoutine (MINIDUMP_CALLBACK_ROUTINE)MiniDumpCallback;mci.CallbackParam 0;::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile, MiniDumpNormal, (pep ! 0) ? mdei : 0, NULL, mci);CloseHandle(hFile);}}LONG __stdcall MyUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo){std::string exename Dmp;std::wstring wexename StringToWString(exename);;std::wstring filename wexename L- GetTimeNowString() L.dmp;CreateMiniDump(pExceptionInfo, filename.c_str());return EXCEPTION_EXECUTE_HANDLER;}// 此函数一旦成功调用之后对 SetUnhandledExceptionFilter 的调用将无效void DisableSetUnhandledExceptionFilter(){void* addr (void*)GetProcAddress(LoadLibrary(Lkernel32.dll),SetUnhandledExceptionFilter);if (addr){unsigned char code[16];int size 0;code[size] 0x33;code[size] 0xC0;code[size] 0xC2;code[size] 0x04;code[size] 0x00;DWORD dwOldFlag, dwTempFlag;VirtualProtect(addr, size, PAGE_READWRITE, dwOldFlag);WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);VirtualProtect(addr, size, dwOldFlag, dwTempFlag);}}void InitMinDump(){//注册异常处理函数SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);//使SetUnhandledExceptionFilterDisableSetUnhandledExceptionFilter();} }   使用 int main() {......FrameworkMiniDump::InitMinDump(); ...... } 调用一下InitMinDump就可以了这里面会注册一个回调崩溃时会保存的dmp文件。 注意需要在debug模式。保存下来的dmp文件需要结合pdb文件和源代码才能定位到哪里崩溃了。具体的我也不懂。  转载于:https://www.cnblogs.com/xcywt/p/10291219.html
http://www.pierceye.com/news/844266/

相关文章:

  • 自己开发网站怎么盈利开发游戏需要多少资金
  • 先域名 还是先做网站塘厦
  • 企业公众号以及网站建设wordpress 代码块样式
  • 网站源码搭建教程大同建设银行保安招聘网站
  • 无锡网站设wordpress营销模板
  • 建站哪个好一点wordpress直达按钮
  • 卢松松网站的百度广告怎么做的小程序开发成都公司
  • 导航网站头部代码android开发者官网
  • 网站设计需求分析报告做漫画的网站有哪些
  • 做什么网站吸引人sinaapp wordpress 固定链接
  • 东莞做网站怎么样搜狐综合小时报2022113011
  • 校园网站的意义融资渠道
  • 做网站上海公司自己制作一个网站需要什么软件
  • 铜川做网站电话app开发程序
  • 自助建微网站备案后修改网站名称
  • 免费网站正能量网站如何后台管理
  • 网站开发的质量标准网站如何做自适应
  • 黄南州wap网站建设公司wordpress里面怎么加链接
  • 五分钟自己创建网站的方法免费试用网站空间
  • 安徽平台网站建设找哪家辽宁建设工程信息网审核
  • 余姚住房和建设局网站10元备案域名购买
  • 企业网站制作公司盈利做支付行业招代理一般上什么网站
  • 网站制作电话wordpress支持PHP吗
  • 天津网站推广宣传拓者设计吧室内设计
  • 建设 信用中国 网站淘宝购物
  • 义乌论坛网站建设怎样建设智能网站
  • 重庆做网站 外包公司建设校园网站的必要性
  • 做我女朋友好不好套路网站html5网页设计实训总结
  • 怎样给网站登录界面做后台seo研究中心官网
  • 养生类网站源码dreamwear网页制作