CDebugReportHook 类
使用此类将调试报告发送到命名管道。
语法
class CDebugReportHook
成员
公共构造函数
名称 | 描述 |
---|---|
CDebugReportHook::CDebugReportHook | 调用 SetPipeName、SetTimeout 和 SetHook。 |
CDebugReportHook::~CDebugReportHook | 调用 CDebugReportHook::RemoveHook。 |
公共方法
名称 | 描述 |
---|---|
CDebugReportHook::CDebugReportHookProc | (静态)连接到 C 运行时调试报告过程的自定义报告函数。 |
CDebugReportHook::RemoveHook | 调用此方法可停止将调试报告发送到命名管道并还原上一个报表挂钩。 |
CDebugReportHook::SetHook | 调用此方法以开始将调试报告发送到命名管道。 |
CDebugReportHook::SetPipeName | 调用此方法可设置将调试报告发送到的计算机和管道名称。 |
CDebugReportHook::SetTimeout | 调用此方法可设置此类等待命名管道可用的时间(以毫秒为单位)。 |
备注
在服务或应用程序的调试版本中创建此类实例,以将调试报告发送到命名管道。 调试报告是通过调用 _CrtDbgReport 或使用此函数的包装器(如 ATLTRACE 和 ATLASSERT 宏)生成的。
使用此类可以交互方式调试在非交互式窗口工作站中运行的组件。
请注意,调试报表是使用线程的基础安全上下文发送的。 临时禁用模拟,以便在模拟低特权用户时(例如在 Web 应用程序中)查看调试报告。
要求
标头:atlutil.h
CDebugReportHook::CDebugReportHook
调用 SetPipeName、SetTimeout 和 SetHook。
CDebugReportHook(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe",
DWORD dwTimeout = 20000) throw();
参数
szMachineName
应将调试输出发送到的计算机的名称。 默认为本地计算机。
szPipeName
应将调试输出发送到的命名管道的名称。
dwTimeout
此类等待命名管道可用的时间(以毫秒为单位)。
CDebugReportHook::~CDebugReportHook
调用 CDebugReportHook::RemoveHook。
~CDebugReportHook() throw();
CDebugReportHook::CDebugReportHookProc
连接到 C 运行时调试报告过程的自定义报告函数。
static int __cdecl CDebugReportHookProc(
int reportType,
char* message,
int* returnValue) throw();
参数
reportType
报表的类型(_CRT_WARN、_CRT_ERROR 或 _CRT_ASSERT)。
message
message 字符串。
returnValue
应由 _CrtDbgReport 返回的值。
返回值
如果挂钩完全处理了所讨论的消息,那么不需要进一步的报告. 如果 _CrtDbgReport
应以正常方式报告消息,则返回 TRUE。
备注
报告函数尝试打开命名管道,并在另一端与进程通信。 如果管道繁忙,则报告函数将等到管道可用或超时过期为止。 可以通过构造函数或调用 CDebugReportHook::SetTimeout 设置超时。
此函数中的代码在调用线程的基础安全上下文中执行,即在此函数的持续时间内禁用模拟。
CDebugReportHook::RemoveHook
调用此方法可停止将调试报告发送到命名管道并还原上一个报表挂钩。
void RemoveHook() throw();
备注
调用 _CrtSetReportHook2 还原上一个报表挂钩。
CDebugReportHook::SetHook
调用此方法以开始将调试报告发送到命名管道。
void SetHook() throw();
备注
调用 _CrtSetReportHook2 通过 CDebugReportHookProc 将调试报告路由到命名管道。 此类会跟踪以前的报表挂钩,以便在调用 RemoveHook 时还原它。
CDebugReportHook::SetPipeName
调用此方法可设置将调试报告发送到的计算机和管道名称。
BOOL SetPipeName(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe") throw();
参数
szMachineName
应将调试输出发送到的计算机的名称。
szPipeName
应将调试输出发送到的命名管道的名称。
返回值
如果成功,则返回 TRUE;如果失败,则返回 FALSE。
CDebugReportHook::SetTimeout
调用此方法可设置此类等待命名管道可用的时间(以毫秒为单位)。
void SetTimeout(DWORD dwTimeout);
参数
dwTimeout
此类等待命名管道可用的时间(以毫秒为单位)。