; Trace source file for the xxx dynalink. Compiled with 16-bit offsets. MODNAME=\c\src\xxx.dll MAJOR=0xC5 MAXDATALEN=200 ; We will want to trace up to 200 bytes in any one trace call. TYPELIST NAME=API,ID=08, NAME=SYS,ID=04, NAME=PRE,ID=02, NAME=POST,ID=64 GROUPLIST NAME=MEM,ID=1, NAME=FS,ID=3 /* The following tracepoint does not need debug info, only a MAP file is necessary with label xxalloc public in it. The program must be compiled in 16-bit mode because segmented addressing is used (ASCIIZ instead of ASCIIZ32). This logs the word registers AX and BX and the string pointed at by DS:DI for a max of 20 bytes. */ TRACE MINOR=25, TP=.xxalloc, OPCODE=0x8B, /* the opcode is optional */ TYPE=(API,PRE), GROUP=MEM, DESC="(OS) xxalloc Pre-Invocation", FMT =" AX = %W ", FMT =" upper BX = %B", FMT =" lower BX = %B", FMT =" param = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S", REGS=(AX,BX), ASCIIZ=(RDS+DI,DIRECT,20) /* This defines a tracepoint at Foo label. The ten words to log are found indirectly through SS:SP. Note that each word needs a format control but since only one memory access was done, one prefix control is needed. */ TRACE MINOR=0xB0, TP=.Foo, TYPE=(SYS), GROUP=FS, DESC="(OS) Foo Pre-Invocation", FMT=" First Five words = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69Wtrtrcust.scr, tk.sdb.ToolsReference, id207sW@(#)69 1.4W", FMT=" Three words ignored %I6", FMT=" Last Two Words = trtrcust.scr, tk.sdb.ToolsReference, id207sW", MEM=(RSS+SP,INDIRECT,20) /* This defines a tracepoint at Goo label. DS:DI points to a structure whose second field is a pointer to an ASCIIZ string. The offset from the first field in the structure is 4 bytes. Max string size to log is 40 bytes. */ TRACE MINOR=0xB1, TP=.Goo, TYPE=(SYS), GROUP=FS, DESC="(OS) Goo Pre-Invocation", FMT=" Second field in struct points to /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S", ASCIIZ=(RDS+DI+4,INDIRECT,40) /* This defines a tracepoint at Hoo label. DS:DI points to memory that contains a pointer to a structure. We want to log the third field in the structure (offset 6 from begin of structure). */ TRACE MINOR=0xB2, TP=.Hoo, TYPE=(SYS), GROUP=FS, DESC="(OS) Hoo Pre-Invocation", FMT=" Third field in struct is doubleword = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D", MEM=(RDS+DI,INDIRECT*+6,4) /* This defines a tracepoint at Zoo label. DS:DI points to memory that contains a pointer to end of a structure. We want to log the last field in the structure(offset -2 from end of structure). */ TRACE MINOR=0xB3, TP=.Zoo, TYPE=(SYS), GROUP=FS, DESC="(OS) Zoo Pre-Invocation", FMT=" Last field in struct is word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W", MEM=(RDS+DI,INDIRECT*-2,2) /* This defines a tracepoint at procedure CheckIT. This is a C routine compiled with debug information. The data to log is an ASCIIZ string called NameIt. */ TRACE MINOR=0xB3, TP=.CheckIt, TYPE=(PRE), GROUP=FS, DESC="(OS) CheckIt Pre-Invocation", FMT=" NameIt = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S", ASCIIZ=(.NameIt,DIRECT,64) /* This defines a tracepoint at the return point of the procedure CheckIt, a C routine compiled with debug. Status_Rec is a record variable. We want to log the age field (four bytes from the begin of Status_Rec), the name (six bytes from Status_Rec that points to an ASCIIZ string), the age of the next Status_Rec (a pointer to the next Status_Rec is ten bytes from the begin of Status_Rec, the age is four bytes from the begin of the next Status_Rec). */ TRACE MINOR=0x80B3, TP=.CheckIt,RETEP, TYPE=(POST), GROUP=FS, DESC="(OS) CheckIt Post-Invocation", FMT=" Status_Rec.age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W", FMT=" Status_Rec.name = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S", FMT=" Status_Rec.next->age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W", MEM=(.Status_Rec+4,DIRECT,2), ASCIIZ=(.Status_Rec+6,INDIRECT,64), MEM=(.Status_Rec+10,INDIRECT*+4,2) /* This defines a tracepoint at line 58 in the source file check.c Debug info is needed to use this type of tracepoint. v_ptr is a pointer to a variable sized record. The length is 4 bytes past the beginning of the record. Log that record. */ TRACE MINOR=0x71B4, TP=@check.c,58, TYPE=(SYS), GROUP=FS, DESC="(OS) CheckIt before allocation", FMT=" Variant Record = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W96/09/03U", LEN=(v_ptr,INDIRECT*+4), MEM=(.v_ptr,INDIRECT,LEN) /* This does not define a tracepoint, it only defines a trace formatting string for minor code 181 (B5 hex). */ TRACE MINOR=0xB5, TP=@STATIC, DESC="(OS) StaticProcedure Pre-Invocation", FMT=" DI = %W FLAGS = %W" /* This defines a tracepoint at routine LookUp, but no data is to be logged, only the DESC will show up in the Trace log when the tracepoint is formatted. */ TRACE MINOR=0xB6, TP=.LookUp, TYPE=(SYS), GROUP=FS, DESC="(APP) LookUp Pre-Invocation",