Отладка приложений


         

Применение TraceSrv


Работать с программой TraceSrv довольно легко. Код на сопровождающем компакт-диске вызывает TraceSrv из программ, написанных на трех различных языках. В листинге 11-4 приведен пример вызова TraceSrv из программы на VBScript, который показывает, насколько легко использовать TraceSrv. Пример на C++ более интересен в том отношении, что прежде чем обращаться к TraceSrv, нужно конвертировать строки трассы в строки типа BSTR. Программа DCOMTEST.CPP показана в листинге 11-5.

RFC — Remote Procedure Call, удаленный вызов процедуры (средство передачи сообщений, которое позволяет распределенному приложению вызывать сервис различных компьютеров в сети; обеспечивает процедурно-ориентированный подход в работе с сетью; применяется в распределенных объектных технологиях, таких как DCOM, CORBA, Java RMI. — Пер

 Листинг 11-4. Вызов TraceSrv из VBScript 

<SCRIPT LANGUAGE="VBScript"><!- -

Dim g_TraceObj

set g_TraceObj = CreateObject ( "TraceSrv.Trace.1" )

g_TraceObj.Trace( "This is a test of the...?" + vbCRLF )

Sub ButtonOne_OnClick

g_TraceObj.Trace ( "Hey! I'm Button One!" + vbCRLF )

 End Sub 

Sub ButtonTwo__OnClick

g_TraceObj.Trace ( "VBScript is dangerous!" + vbCRLF )

 End Sub

 - -></SCRIPT>

Листинг 11-5. Вызов TraceSrv из программы на C++ (DCOMtESf .СРР)

void main ( void ) 

{

HRESULT hr ;

ITrace * IpTrace ;

lUnknown * IpUnknown ;

// Инициализировать библиотеки СОМ+.

hr = CoInitializeEx ( NULL , COINIT_APARTMENTTHREADED ) ;

if ( FAILED ( hr ) )

{

printf ( "Unable to initialize COM+\n" ) ; 

return ; 

}

hr = CoCreatelnstance ( CLSIDJTrace ,

NULL , CLSCTX_SERVER , IID_IUnknown , (LPVOID*)SlpUnknown } ;

 if ( FAILED ( hr ) ) 

{

LPVOID IpMsgBuf;

FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |

 FORMAT_MESSAGE__FROM_SYSTEM |

  FORMAT_MESSAGE_IGNORE__INSERTS, 

NULL,

  hr,

MAKELANGID ( LANG_NEUTRAL, SUBLANG__DEFAULT ), 



Содержание  Назад  Вперед