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

电商网站前端模板下载网页制作模板html

电商网站前端模板下载,网页制作模板html,邯郸seo,做内贸只要有什么网络推广网站dump文件 dump文件记录当前程序运行某一时刻的信息#xff0c;包括内存#xff0c;线程#xff0c;线程栈#xff0c;变量等等#xff0c;相当于调试程序时运行到某个断点上#xff0c;把程序运行的信息记录下来。可以通过Windbg打开dump#xff0c;查看程序运行的变量…dump文件 dump文件记录当前程序运行某一时刻的信息包括内存线程线程栈变量等等相当于调试程序时运行到某个断点上把程序运行的信息记录下来。可以通过Windbg打开dump查看程序运行的变量等来调试程序。 在Liunx上也有类似的技术Coredump具体可以参考coredump详解_coredump文件分析_贺二公子的博客-CSDN博客 dump 文件分类 dump可以分为 minidump 和 Full dump minidump通常只包含了一些关键信息一般比较小通常只要几MB Full dump包含了程序运行时的所有信息包括程序的所有内存一般有几十MB到几GB。 minidump虽然只包含了部分信息但这些信息大部分情况足够用于调试所以大部分情况都是使用minidump调试 生成dump文件 通过任务管理器导出 在进程上右击-创建内存转储文件这样创建的是Full dump 通过Process Explorer导出 Process Explorer - Sysinternals | Microsoft Learn 选择对应的进程-Process-Create Dump然后选择要创建minidum 还是 Full Dump 使用MiniDumpWriteDump函数序生成  #include iostream #include Windows.h #include Dbghelp.h #include thread #pragma comment(lib, Dbghelp.lib)void createMinidump() {wchar_t DumpPath[MAX_PATH] {0};SYSTEMTIME SystemTime;GetLocalTime(SystemTime);WCHAR szExeFileName[256] {0};GetModuleFileNameW(nullptr, szExeFileName, 99);wsprintfW(DumpPath, L%s_%d-%d-%d_%d-%d-%d.dmp, szExeFileName, SystemTime.wYear, SystemTime.wMonth,SystemTime.wDay, SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond);HANDLE file CreateFileW(DumpPath, GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);if (file ! INVALID_HANDLE_VALUE){DWORD Flags MiniDumpWithHandleData |MiniDumpWithUnloadedModules |MiniDumpScanMemory|MiniDumpWithIndirectlyReferencedMemory |MiniDumpWithProcessThreadData |MiniDumpWithThreadInfo;if (MiniDumpWriteDump(GetCurrentProcess(), (DWORD) GetCurrentProcessId(), file,(MINIDUMP_TYPE) (Flags),nullptr, nullptr, nullptr) ! 0){std::cout Create Minidump successful!! file:;std::wcout DumpPath std::endl;}else{std::cout Create Minidump failed!! std::endl;}}CloseHandle(file); }void createFullDump() {wchar_t DumpPath[MAX_PATH] {0};SYSTEMTIME SystemTime;GetLocalTime(SystemTime);WCHAR szExeFileName[256] {0};GetModuleFileNameW(nullptr, szExeFileName, 99);wsprintfW(DumpPath, L%s_%d-%d-%d_%d-%d-%d_full.dmp, szExeFileName, SystemTime.wYear, SystemTime.wMonth,SystemTime.wDay, SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond);HANDLE file CreateFileW(DumpPath, GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);if (file ! INVALID_HANDLE_VALUE){const DWORD Flags MiniDumpWithFullMemory |MiniDumpWithFullMemoryInfo |MiniDumpWithHandleData |MiniDumpWithUnloadedModules |MiniDumpWithProcessThreadData |MiniDumpWithThreadInfo;if (MiniDumpWriteDump(GetCurrentProcess(), (DWORD) GetCurrentProcessId(), file,(MINIDUMP_TYPE) (Flags),nullptr, nullptr, nullptr) ! 0){std::cout Create Full dump successful!! file:;std::wcout DumpPath std::endl;}else{std::cout Create Full dump failed!! std::endl;}}CloseHandle(file); }程序崩溃时自动导出Dump 我们希望程序运行崩溃时可以自动导出dump这样可以通过分析dump文件找到崩溃原因。 程序崩溃很多情况都是由异常引起的Windows提供了SetUnhandledExceptionFilter函数用来设置一个函数指针用于处理未处理的异常可以在这个函数中导出Dump文件。 1. 准备一个处理异常的函数并在其中导出dump。异常处理函数有一个参数这个参数记录了当前异常信息这个异常信息可以一起随dump文件导出方便后续查找文件 LONG WINAPI DumpException(EXCEPTION_POINTERS* info) {std::cout DumpException, Thread ID: std::this_thread::get_id() std::endl;std::cout Exception: 0x std::hex info-ExceptionRecord-ExceptionCode std::endl;wchar_t DumpPath[MAX_PATH] { 0 };SYSTEMTIME SystemTime;GetLocalTime(SystemTime);WCHAR szExeFileName[100] { 0 };GetModuleFileNameW(nullptr, szExeFileName, 99);wsprintfW(DumpPath, L%s_%d-%d-%d_%d-%d-%d_crash.dmp, szExeFileName, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay, SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond);HANDLE file CreateFileW(DumpPath, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);if (file ! INVALID_HANDLE_VALUE){MINIDUMP_EXCEPTION_INFORMATION mdei;mdei.ThreadId (DWORD)GetCurrentThreadId();mdei.ExceptionPointers info;mdei.ClientPointers 0;DWORD Flags MiniDumpWithHandleData |MiniDumpWithUnloadedModules |MiniDumpScanMemory|MiniDumpWithIndirectlyReferencedMemory |MiniDumpWithProcessThreadData |MiniDumpWithThreadInfo;// Flags MiniDumpWithFullMemory | // MiniDumpWithFullMemoryInfo | // MiniDumpWithHandleData | // MiniDumpWithUnloadedModules | // MiniDumpWithThreadInfo;if (MiniDumpWriteDump(GetCurrentProcess(), (DWORD)GetCurrentProcessId(), file,(MINIDUMP_TYPE)(Flags),mdei, nullptr, nullptr) ! 0){std::cout Create Crash dump successful!! file:;std::wcout DumpPath std::endl;CloseHandle(file);return EXCEPTION_EXECUTE_HANDLER;}}std::cout Create Crash dump failed!! std::endl;CloseHandle(file);return EXCEPTION_CONTINUE_SEARCH; }2. 在程序启动时设置异常处理函数 int main() {std::cout Main Thread ID: std::this_thread::get_id() std::endl;LPTOP_LEVEL_EXCEPTION_FILTER oldExceptionFilter nullptr;oldExceptionFilter SetUnhandledExceptionFilter(DumpException);// ... ...// ... ...} PS 1. 这里是通过异常捕获生成dump如果是调用abortexitTerminateProcess, TerminateThread函数这些函数会立即结束函数所以不会生成dump。 2. SetUnhandledExceptionFilter是全局的只需设置一次设置后对所有线程有效。SetUnhandledExceptionFilter有些异常捕获不到。 3. 可以使用第三方库捕获崩溃事件例如crashrptgoogle breakpadqBreakpadCrashpad UnhandledExceptionFilter未处理的异常 Windows中所有的函数都是从BaseThreadStart函数开始运行 VOID BaseThreadStart(PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam) { __try { ExitThread((pfnStartAddr)(pvParam)); } __except (UnhandledExceptionFilter(GetExceptionInformation())) { ExitProcess(GetExceptionCode()); } // NOTE: We never get here } 这里的函数UnhandledExceptionFilter用来处理线程中捕获的未处理的异常调用SetUnhandledExceptionFilter就是用来设置这个函数。 这里的__try{}__except{} 是 Windows系统的结构化异常处理(SEH)具体参考 《Windows核心编程第五版》——第24章 使用VS调试Dump文件 调试Dump文件dump文件以外还需要pdb符号文件pdb符号文件是编译时和exe程序同时生成的默认情况下Debug版本会生成符号文件Release文件不生成符号文件Release模式下需要收到打开生成符号文件。 打开Dump文件 文件-打开-文件选择dump文件 设置符号文件 符号文件(pdb)必须保证时和exe同时生成的且不能改文件名否则会加载失败 有两种方法 1. 把符号文件和dump文件放在同一个目录下VS在加载dump时会读取dump目录下的符号文件。 2. 通过 【工具-选项-调试-符号】设置符号文件路径。 3. 点击右上角的 【使用 混合 进行调试】则可以查看dump文件的内容和调试模式下运行出现异常是一样的。 使用Windbg调试Dump文件 Windbg 下载 Install WinDbg - Windows drivers | Microsoft Learn Windbg打开dump后会提示是否有异常 调试步骤 1. 设置符号文件 【文件-settings-debuging settings】 2. 输入 .ecxr 命令 3. 输入 kn 命令 查看exe编译时间 lm vm test_win* 通过这个时间可以去查找exe对应的pdb文件  完整代码例子小康6650/StudyProject - Gitee.com
http://www.pierceye.com/news/885811/

相关文章:

  • 经典手机网站家政公司网站模板
  • 外贸做的亚马逊网站是哪个好产品怎样推广有效
  • 网站后台数据库备份怎么做怎样在阿里做网站
  • 后台网站手机版视频怎么做安阳百姓网
  • 设计公司网站公司详情域名解析网站登录
  • 优秀学校网站设计可以免费下源码的网站
  • 榆林高端网站建设xampp使用教程 wordpress
  • 站长工具搜一搜找做网站的
  • 建一个域名网站要多少钱南京哪里有做网站的
  • 网站群的建设网站建设自助建站制作
  • 怎么做网站程序标书制作教程全过程
  • 学网站建设前景印度做杂质的网站
  • 网站的建设意义盐城网站建设找哪家好
  • 赤峰市网站建设年轻人免费在线看视频
  • 使用word做网站网络广告的特点有哪些?
  • 网站系统参数设置定制网站的制作流程
  • 做家教网站公司品牌vi设计升级
  • 唯品会网站建设建议浙江网站建设价格费用
  • 网站建设购买深圳有做网站的公司有哪些
  • 网站预算表怎么做网站域名续费怎么续费
  • 宁波建设网站公众号关注编辑网站教程
  • 怎样自己做刷赞网站开发软件需要多少成本
  • 为什么网站之有首页被收录广西两学一做网站
  • 制作网站需要的软件怎么向google提交网站
  • 济南网站的建设公司网站建设征求意见表
  • 小学校园网站建设简介打开网站弹出一张图片 怎么做
  • 做外贸没有网站需要注意什么条件做简历模板的网站都有哪些
  • 铜陵保障性住房和城乡建设网站舞钢市城乡建设局网站
  • 企业网站总承包建设模式关键步骤凡科论文送审平台
  • 石家庄学校网站建设在线定制签名