Возникла потребность отладить код, который выполняется в нескольких параллельных сеансах. Хотелось видеть сообщения из всех сеансов в одном окне. Журнал регистрации меня не устраивал. Решил использовать 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 живет здесь.