如何监听OutputDebugString

本文介绍了如何监听和理解OutputDebugString的工作原理,包括其与DebugViewPP的关系,以及如何在不使用VS2019调试时查看调试字符串。通过等待DBWIN_DATA_READY事件并重定向输出,可以在控制台上捕获OutputDebugString的调试信息。

代码

#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <process.h>
#include <Windows.h>
#include<thread>
#include <windows.h>
#include <atlbase.h>
#include <atlstr.h>


// -------------------------------------------------------------------------------
//  PROPERTIES OF OBJECTS
// -------------------------------------------------------------------------------
//	NAME			|	DBWIN_BUFFER_READY		DBWIN_DATA_READY	DBWIN_BUFFER
// -------------------------------------------------------------------------------
//	TYPE			|	Event					Event			FileMapping
//	ACCESS		|	All						Sync				All
//	INIT STATE	|	Signaled				Nonsignaled			Not open
//	PROPERTY		|	Auto-Reset			Auto-Reset			PAGE_READWRITE
//  Handle Name 	|	hEventBufferReady		hEventDataReady		DBWinBufferHandle
// -------------------------------------------------------------------------------
HANDLE DBWinBufferHandle;
HANDLE hEventBufferReady;
HANDLE hEventDataReady;

HANDLE m_hWinDebugMonitorThread;
BOOL m_bWinDebugMonStopped;
struct DBWIN_BUFFER_VIEW
{
   
   
	DWORD   dwProcessId;
	char    data[4096 - sizeof(DWORD)];
};
struct DBWIN_BUFFER_VIEW* pDBWIN_BufferView;
bool gMonitor = true;
std::thread gMonitorThread;
void MonitorFunction();

DWORD InitializeMonitor()
{
   
   
	DWORD errorCode = 0;
	BOOL bSuccessful = FALSE;
	SetLastError(0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值