资源简介
1. 程序崩溃后,让它能自动重启,继续运行。
2. 对崩溃的程序,在退出前,自动在控制台上输出其退出堆栈详情,以便调试。(适合自动测试程序)
代码片段和文件信息
//----------------------------------------------------------------------------
//
// C++ dbgeng extension framework.
//
// Copyright (C) Microsoft Corporation 2005-2009.
//
//----------------------------------------------------------------------------
#include
#include
#include
#if defined(_PREFAST_) || defined(_PREFIX_)
#define PRE_ASSUME(_Cond) __analysis_assume(_Cond)
#else
#define PRE_ASSUME(_Cond)
#endif
#define IsSpace(_Char) isspace((UCHAR)(_Char))
PEXT_DLL_MAIN g_ExtDllMain;
WINDBG_EXTENSION_APIS64 ExtensionApis;
ExtCheckedPointer
g_Ext(“g_Ext not set used outside of a command“);
//----------------------------------------------------------------------------
//
// ExtException family.
//
//----------------------------------------------------------------------------
void
ExtException::PrintMessageVa(__in_ecount(BufferChars) PSTR Buffer
__in ULONG BufferChars
__in PCSTR Format
__in va_list Args)
{
StringCchVPrintfA(Buffer BufferChars Format Args);
m_Message = Buffer;
}
void WINAPIV
ExtException::PrintMessage(__in_ecount(BufferChars) PSTR Buffer
__in ULONG BufferChars
__in PCSTR Format
...)
{
va_list Args;
va_start(Args Format);
PrintMessageVa(Buffer BufferChars Format Args);
va_end(Args);
}
//----------------------------------------------------------------------------
//
// Holders.
//
//----------------------------------------------------------------------------
void
ExtCurrentThreadHolder::Refresh(void)
{
HRESULT Status;
if ((Status = g_Ext->m_System->
GetCurrentThreadId(&m_ThreadId)) != S_OK)
{
throw ExtStatusException(Status
“ExtCurrentThreadHolder::Refresh failed“);
}
}
void
ExtCurrentThreadHolder::Restore(void)
{
if (m_ThreadId != DEBUG_ANY_ID)
{
PRE_ASSUME(g_Ext.IsSet());
if (g_Ext.IsSet())
{
// Ensure that g_Ext-> operator will not throw exception.
g_Ext->m_System->SetCurrentThreadId(m_ThreadId);
}
m_ThreadId = DEBUG_ANY_ID;
}
}
void
ExtCurrentProcessHolder::Refresh(void)
{
HRESULT Status;
if ((Status = g_Ext->m_System->
GetCurrentProcessId(&m_ProcessId)) != S_OK)
{
throw ExtStatusException(Status
“ExtCurrentProcessHolder::Refresh failed“);
}
}
void
ExtCurrentProcessHolder::Restore(void)
{
if (m_ProcessId != DEBUG_ANY_ID)
{
PRE_ASSUME(g_Ext.IsSet());
if (g_Ext.IsSet())
{
// Ensure that g_Ext-> operator will not throw exception.
g_Ext->m_System->SetCurrentProcessId(m_ProcessId);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 418558 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\help\dbghelp.chm
文件 534968 2009-09-18 11:35 Prj_Lib\Debuggers\sdk\inc\dbgeng.h
文件 129227 2010-06-12 16:56 Prj_Lib\Debuggers\sdk\inc\dbghelp.h
文件 133066 2009-09-18 11:35 Prj_Lib\Debuggers\sdk\inc\engextcpp.cpp
文件 105869 2010-02-01 12:00 Prj_Lib\Debuggers\sdk\inc\engextcpp.hpp
文件 60824 2010-01-19 14:42 Prj_Lib\Debuggers\sdk\inc\extsfns.h
文件 76601 2009-09-18 11:35 Prj_Lib\Debuggers\sdk\inc\wdbgexts.h
文件 2094 2010-02-01 12:14 Prj_Lib\Debuggers\sdk\lib\amd64\dbgeng.lib
文件 43712 2010-02-01 12:14 Prj_Lib\Debuggers\sdk\lib\amd64\dbghelp.lib
文件 1081276 2010-02-01 12:15 Prj_Lib\Debuggers\sdk\lib\amd64\engextcpp.lib
文件 2140 2010-02-01 12:07 Prj_Lib\Debuggers\sdk\lib\i386\dbgeng.lib
文件 48050 2010-02-01 12:07 Prj_Lib\Debuggers\sdk\lib\i386\dbghelp.lib
文件 814508 2010-02-01 12:06 Prj_Lib\Debuggers\sdk\lib\i386\engextcpp.lib
文件 2204 2010-02-01 12:21 Prj_Lib\Debuggers\sdk\lib\ia64\dbgeng.lib
文件 52464 2010-02-01 12:21 Prj_Lib\Debuggers\sdk\lib\ia64\dbghelp.lib
文件 1405292 2010-02-01 12:22 Prj_Lib\Debuggers\sdk\lib\ia64\engextcpp.lib
文件 12445 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\adp_ext.cpp
文件 310 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\adp_ext.def
文件 342 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\adp_ext.rc
文件 2564 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\dbgexts.cpp
文件 1324 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\dbgexts.h
文件 247 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\makefile
文件 599 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\adp_ext\sources
文件 1655 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\analyze_continue\continue_known.xm
文件 1186 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\analyze_continue\continue_known.xsd
文件 8185 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\assert\assert.cpp
文件 247 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\assert\makefile
文件 1365 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\assert\out.cpp
文件 843 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\assert\out.hpp
文件 536 2009-08-24 14:38 Prj_Lib\Debuggers\sdk\samples\assert\sources
............此处省略77个文件信息
- 上一篇:日语句型地道表达500例
- 下一篇:net小区物业管理系统源码.rar
相关资源
- 进程守护软件,自动重启软件
- AWR13 64位修复右键崩溃Crack
- windows脚本监控tomcat运行网站状态可自
- Qt 崩溃重启.zip
- win10 迅雷极速版 崩溃、闪退 补丁
- bigantIM_2.97.0_查看超大聊天记录不崩溃
- 高通不崩溃版 Adreno Profiler 批量导出资
- qt在window实现调取摄像头识别二维码条
- qt在window实现调取摄像头识别二维码条
- google breakpad崩溃解析工具(已经编译
- AWR右键崩溃解决文件
- lolwin10崩溃包
- bat监控windows进程并自动重启
- cocos2d搓牌-lua代码(完美运行安卓和
- 用来防止软件自动掉线崩溃自动重启
- CrashFinder
- 解决打开崩溃问题BMFont(win10).zip
- BMFont工具,解决最新win10崩溃问题
- 友盟崩溃分析工具
- linux-快乐的热更新工具监听文件变化
- 易语言 多线程防崩溃防卡死
评论
共有 条评论