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

景区网站如何建设南通公司企业网站建设

景区网站如何建设,南通公司企业网站建设,北京网站建设咸宁,公司网站设计制作开发方案场景:1. Release的程序崩溃时#xff0c;崩溃报告能够让开发者查明代码哪里出了问题#xff0c;用处大大的。2. 仅仅实用VS的编译器才支持#xff0c;所以MinGW就无缘了。3. 使用了未处理异常过滤处理函数.4. 生成的.dmp文件用zlib库压缩, 用到下面的ZipHelper类#xff0c… 场景:1. Release的程序崩溃时崩溃报告能够让开发者查明代码哪里出了问题用处大大的。2. 仅仅实用VS的编译器才支持所以MinGW就无缘了。3. 使用了未处理异常过滤处理函数.4. 生成的.dmp文件用zlib库压缩, 用到下面的ZipHelper类编译时还是须要zlib库和dbghelp.libhttp://blog.csdn.net/infoworld/article/details/412909695. 使用方式就是把DbgReport作为app类的成员变量或者文件范围的全局变量初始化后在程序执行開始前调用RegisterCrashFilter6. 更新: 添加VC CRT异常捕抓. 2015-09-25參考:http://blog.csdn.net/limiteee/article/details/8472179bas_dbg_report.h#ifndef __BAS_DBG_REPORT #define __BAS_DBG_REPORT#include bas_exp.h//1.能够自己改动參数,加入额外信息. typedef void (*BASReportCallbackFunc)(const wchar_t* dump_zip_path);class LIB_BASIC BASDbgReport { public:void RegisterCrashFilter(const wchar_t* dump_path,BASReportCallbackFunc func);};#endifbas_dbg_report.cpp#include basic/bas_dbg_report.h #include Windows.h #include DbgHelp.h#include basic/bas_utility_string.h #include basic/bas_wrap_object.h #include basic/bas_utility_zip.hstatic std::wstring gDumpPath; static std::wstring gDumpZipPath;static BASReportCallbackFunc gReportCallbackFunc NULL;static BOOL IsDataSectionNeeded(const WCHAR* pModuleName) { if(pModuleName NULL) { return FALSE; } WCHAR szFileName[_MAX_FNAME] L; _wsplitpath(pModuleName, NULL, NULL, szFileName, NULL); if(wcsicmp(szFileName, Lntdll) 0) return TRUE; return FALSE; } static 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; } static LONG WINAPI TopLevelUnhandledExceptionFilter(PEXCEPTION_POINTERS pExInfo) {HANDLE hFile ::CreateFile( gDumpPath.c_str(), GENERIC_WRITE, 0, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if( hFile ! INVALID_HANDLE_VALUE){MINIDUMP_EXCEPTION_INFORMATION einfo;einfo.ThreadId ::GetCurrentThreadId();einfo.ExceptionPointers pExInfo;einfo.ClientPointers FALSE;MINIDUMP_CALLBACK_INFORMATION mci; mci.CallbackRoutine (MINIDUMP_CALLBACK_ROUTINE)MiniDumpCallback; mci.CallbackParam NULL; ::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile,MiniDumpNormal,einfo, NULL, mci);::CloseHandle(hFile);}//1.压缩dmp文件和其它char* utf8 BASUtilityString::ConvertUnicodeToUtf8(gDumpPath.c_str());BASWrapMalloc wm1(utf8);BASUtilityZip z;z.AddFile(utf8);std::string output(utf8);output.append(.zip);wchar_t* unicode BASUtilityString::ConvertUtf8ToUnicode(output.c_str());BASWrapMalloc wm2(unicode);gDumpZipPath.append(unicode);z.ToZip(output.c_str());if(gReportCallbackFunc){gReportCallbackFunc(gDumpZipPath.c_str());}return EXCEPTION_EXECUTE_HANDLER; }static LPTOP_LEVEL_EXCEPTION_FILTER WINAPI MyDummySetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter) { return NULL; }static BOOL PreventSetUnhandledExceptionFilter() {HMODULE hKernel32 LoadLibrary(Lkernel32.dll);if (hKernel32 NULL) return FALSE;void *pOrgEntry GetProcAddress(hKernel32, SetUnhandledExceptionFilter);if(pOrgEntry NULL) return FALSE;unsigned char newJump[ 100 ];DWORD dwOrgEntryAddr (DWORD) pOrgEntry;dwOrgEntryAddr 5; // add 5 for 5 op-codes for jmp farvoid *pNewFunc MyDummySetUnhandledExceptionFilter;DWORD dwNewEntryAddr (DWORD) pNewFunc;DWORD dwRelativeAddr dwNewEntryAddr - dwOrgEntryAddr;newJump[ 0 ] 0xE9; // JMP absolutememcpy(newJump[ 1 ], dwRelativeAddr, sizeof(pNewFunc));SIZE_T bytesWritten;BOOL bRet WriteProcessMemory(GetCurrentProcess(),pOrgEntry, newJump, sizeof(pNewFunc) 1, bytesWritten);return bRet;}void BASDbgReport::RegisterCrashFilter(const wchar_t* dump_path,BASReportCallbackFunc func) { #ifndef _DEBUGgDumpPath.append(dump_path);gReportCallbackFunc func;SetUnhandledExceptionFilter(TopLevelUnhandledExceptionFilter);//BOOL bRet PreventSetUnhandledExceptionFilter(); //这个部分系统会崩溃,临时不使用. #endif }
http://www.yutouwan.com/news/218995/

相关文章:

  • 李沧做网站开发区招聘信息最新招聘
  • 山东做网站建设公司哪家好东莞东城国际酒店
  • 专业做网站优化需要多久长沙网红打卡点
  • 电商网站模板html新加坡网站建设公司
  • 客户做网站要退款小程序商城一般哪家好
  • 做直播网站有市场吗wordpress添加标签
  • 网站关键词标签火烈鸟门户网站开发
  • 租号网站怎么做的重庆网站建设-言西早工作室响应式
  • 单位做网站注意什么wordpress 改域名
  • 天津市做公司网站的公司如何做网站的薪酬调查
  • win2003怎么做网站优化的意思
  • 公司网站开发设计题目来源怎么写福州网站建设 找燕狂徒 05
  • 低价网站制作顺德html网页制作的软件下载
  • 网站的友情链接是什么意思网络服务合同模板
  • 论坛网站建设视频教程微商加人神器
  • 网站建设视觉设计外国产品设计网站
  • 线下推广有哪些渠道潍坊网站建设优化
  • 易做文学网站的logo电子商务购物网站建设实验报告
  • 网站手机版制作一个网页
  • 商业网站建设的意义国外做兼职网站
  • 网站备案 接入商名称物理网络设计
  • 南京做网站建设的公司哪家好北京网站设计工作室
  • 如何查网站有无备案wordpress如何把网站语言改成英文
  • 国外 设计师 网站商品推广文案
  • 赣州网站制作公司wordpress一键安装
  • thinkphp5来做网站吗外贸购物网站制作
  • 网站欢迎页面设计东莞专业网站推广需要多少钱
  • 课程设计代做网站php广州天河建站公司
  • 网站设计技术建筑论坛网站
  • php做简单网站教程视频wordpress后台入口