Каталог решений - Трассировка с использованием WinAPI функции OutputDebugString

Трассировка с использованием WinAPI функции OutputDebugString

Трассировка с использованием WinAPI функции OutputDebugString

В наличии

Простой способ отображения отладочных сообщений из нескольких сеансов в одном окне

Категория:

Описание

Возникла потребность отладить код, который выполняется в нескольких параллельных сеансах. Хотелось видеть сообщения из всех сеансов в одном  окне. Журнал регистрации меня не устраивал. Решил использовать WinAPI функцию OutputDebugString. Сообщения, передаваемые этой функции, можно отслеживать с помощью программы DebugView или аналогичной.

Вызов WinAPI функции OutputDebugString осуществил с помощью внешней компоненты DynamicWrapperX. В модуле приложения создал экспортируемую фунцию, которая создает СОМ Объект DynamicWrapperX и помещает его в глобальную переменную для повторного использования, затем зарегистрировал в этом СОМ объекте WinAPI функцию OutputDebugString. И после успешной регистрации вызываю OutputDebugString и передаю ей отладочную строку. После выполнения функции отладочное сообщение появляется в окне программы DBGView.exe.

Программу DBGView.exe необходимо запустить до того, как начнут генерироваться отладочные сообщения.

 

// Вовод отладочной информации во внешние трассировщики типа DebugView - Dbgview.exe 
Процедура OutputDebugString( ОтладочнаяСтрока ) Экспорт

	Если гл_UserWrap = Неопределено Тогда		
		Попытка
			гл_UserWrap = Новый COMОбъект( "DynamicWrapperX" );
			гл_UserWrap.Register( "Kernel32.dll", "OutputDebugString", "i=s" );			
		Исключение
			гл_UserWrap = Ложь;
		КонецПопытки; 		
	КонецЕсли;
	
	Если гл_UserWrap <> Неопределено И ТипЗнч( гл_UserWrap ) = Тип( "COMОбъект" ) Тогда			
		гл_UserWrap.OutputDebugString( ОтладочнаяСтрока );		
	КонецЕсли;
	
КонецПроцедуры 

 

DebugView от Марка Руссиновича из Sysinternals (ныне Microsoft) живет здесь.

Внешняя компонента DynamicWrapperX живет здесь.

has been added to your cart:
Оформление заказа