If the module has been compiled and linked with the debug options:
Notes:
Not all source files must be C language when using symbolic support. Assembler and other languages may be used as long as they generate Micorsoft 16-bit CodeView or IBM HLL version 3 and 4 symbolic debugging information.
Tracepoints may be defined by filename and line number references or by symbolic names.
Tracepoints may reference local or global variables.
If symbolic names are referenced then the following points should be observed:
Some compilers will modify external or public symbolic names used in the program. If this is done then the modified form must be used when referenced in the TSF. The modification rules are compiler dependent however three common cases are cited below.
Names must be used case sensitively.
With IBM C/2 and Microsoft C 6.0, external routine names have an underscore prefix to their names when declared using the cdecl convention and are capitalised when declared using the Pascal convention. Symbols for routine names treated this way refer to the first instruction of the routine. When debugging information is present, the unaltered name is also usable and refers to the first instruction following the prologue code, that is creation of the entry stack frame. For example both _main and main may be used. The former refers to the true entry point and the latter after the prologue code. The advantage of using the latter form (main) is that symbolic references may be made to the parameters passed; in this example argc argv and envp.
C runtime library routine names are usually prefixed with an underscore.
With IBM CSET/2 and IBM VisualAge C symbolic names defined by the user are not prefixed with an underscore. However C runtime library routine names are usually prefixed with an underscore. Symbols for routine names defined by the user refer to the initial instruction of the routine when compiled without symbolic debugging information and to the first instruction following the prologue code when debugging information is present. In the latter case, symbolic references may be made to parameters passed to the routine. In the former case this is not possible except by making EBP relative references and using the /PREINV command line switch - see MAP File Support for more information in using symbolic references without the presence of symbolic debugging information.
With IBM VisualAge C++ routine names are subject to name mangling where class-hierarchical information is encoded into the externalised name. The mangled form of the name must be used in TSF references.
In all cases symbolic name lengths are restricted to a maximum length of 255 characters.