Chapter Contents

Previous

Next
SAS/C Debugger Changes for Release 7.50

Release 7.50 Enhancements to the SAS/C Debugger

The following enhancements to the SAS/C Debugger have been implemented with Release 7.50:


Support for Namespaces

A new debugger command, namespc, has been added for SAS/C Release 7.50. In Chapter, 14, "Command Directory," add the following entry to the list in the section titled "List of Commands:"
n{amespc} display namespaces encountered in the source code.

Add the following entry for namespc to the section that contains the descriptions of the commands:

namespc

Display Namespaces

ABBREVIATION
n{amespc}

FORMATS
Format 1: namespc
Format 2: namespc full
Format 3: namespc NAMESPACE-NAME
Format 4: namespc NAMESPACE-NAME TYPE-INTEGER

DESCRIPTION
The namespc command produces a listing of all namespaces or selected namespaces. The listing includes a list of identifier, class/struct/union and function names within each namespace.

Format 1: produces only an abbreviated list of all namespaces without any details.

Format 2: produces a sorted listing of all namespaces with detailed contents of each listed namespace. These details include all entries recorded in each namespace scope such as Identifier/Variable Name, Function Name, and Class/Struct/Union Name.

Format 3: produces a listing of the defined namespace with detailed contents. These details include all entries recorded in this namespace scope such as Identifier/Variable Name, Function Name, and Class/Struct/Union Name.

The NAMESPACE-NAME argument represents a valid namespace name implemented within the source code that is being debugged.

Format 4: produces a listing of the defined namespace with the defined detailed contents. These details include all entries of the same type recorded in this namespace scope such as Identifier/Variable Name, Function Name, and Class/Struct/Union Name where Class/Struct/Union Name is of type 0, Function Name is of type 1, and Identifier/Variable Name is of type 2.

The NAMESPACE-NAME argument represents a valid namespace name implemented within the source code that is being debugged. The argument TYPE-INTEGER represents one of the following:
0 - Class/Struct/Union names found in the scope of the namespace
1 - Function names found in the scope of the namespace
2 - Identifier/variable names found in the scope of the namespace.

EXAMPLES
Format 1: namespc displays the following namespaces listing in the Log window:
Namespace(s) 
=============
1 <<unnamed>>
2 moreStuff
3 myStuff
4 myStuff::nested
5 myStuff::nested::nestagain
6 std

Format 2: namespc full displays the following namespaces listing in the Log window:

Namespace(s)  Entries recorded in this namespace scope
============= ========================================
<<unnamed>>	    
				   Class/Struct/Union XYZ
				   Variable count	
				   Variable cpanon
Namespace(s)  Entries recorded in this namespace scope
============= ========================================
moreStuff
				   Class/Struct/Union XYZ
				   Function swapargs
Namespace(s)  Entries recorded in this namespace scope
============= ========================================
myStuff
				   Class/Struct/Union XYZ
				   Variable count
				   Variable cpanon
				   Function swapargs
				   Function argswap
Namespace(s)  Entries recorded in this namespace scope
============= ========================================
myStuff::nested
				   Class/Struct/Union XYZ
				   Variable count
				   Variable cpanon
				   Function swapargs
Namespace(s)  Entries recorded in this namespace scope
============= ========================================
myStuff::nested::nestagain
			      Class/Struct/Union XYZ
				   Variable count
				   Variable cpanon
				   Function swapargs
Namespace(s)  Entries recorded in this namespace scope
============= ========================================
std
				   Class/Struct/Union __siocb
				   Function fopen
				   Function fflush
				   Variable __io
				   Function main

Format 3: namespc myStuff displays the following namespace listing in the Log window:

Namespace(s)  Entries recorded in this namespace scope
============= ========================================
myStuff
				   Class/Struct/Union XYZ
				   Variable count
				   Variable cpanon
				   Function swapargs
				   Function argswap

Format 4: namespc myStuff 2 displays the following namespace listing in the Log window:

Namespace(s)  Entries recorded in this namespace scope
============= ========================================
myStuff
				   Variable count
				   Variable cpanon

Support has been added to several commands to accept namespace expressions, including assign, break, browse, disable, drop, enable, goto, ignore, list, monitor, on, print, query, resume, runto, scope, trace, watch, and whatis.

SEE ALSO
scope command in Chapter 14, "Command Directory."


Support for IEEE Floating-Point

The 390 Architecture has been augmented in recent years by the addition of support for IEEE standard floating-point. Programs can now be written using the SAS/C Compiler and the SAS/C Debugger to exploit this support. Traditional mainframe floating-point continues to be supported.

Support has been added to several commands to accept IEEE floating-point expressions, including assign, copy, dump, monitor, print, transfer, watch, and whatis. With this support, all unary and binary C operators are available for use with IEEE floating-point expressions including the cast operator.

You can use the cast operator to convert from a hexadecimal floating-point type to a binary floating-point type using the _ _binfmt type-name modifier. Similarly, you can convert from a binary floating-point type to a hexadecimal floating-point type using the _ _hexfmt type-name modifier. You cannot mix binary and hexadecimal floating point operands in the same expression. You must use the cast operator to ensure that all floating-point operands are converted to the same format.

The following example illustrates how to convert from binary floating-point to hexadecimal floating-point using the print command:

print (_ _hexfmt float)binaryFloatVariable;

When using floating-point constants or displaying the floating-point values in the register window, the SAS/C Debugger will use the compilation options in effect for the module in the current scope. For example, if the module was compiled to use the binary floating-point by using either the SAS/C Compiler BFP or ARCHLEVEL(C) options, then the SAS/C Debugger will convert floating-point constants or register values into binary floating-point format before using or displaying them.

The SAS/C Debugger will check for exceptions that occur in IEEE floating-point expressions. The following exceptions will be checked for:
underflow
overflow
divide by zero.


Support for 64-Bit Addressing

In Release 7.50, support has been added to the following debugger commands to accept 64-bit pointers and their use in expressions:

assign monitor
storage
copy
print
watch
dump
return
whatis

The Dump, Print, Register, and Watch windows have also been updated to support 64-bit addressing:

Note:   When you compile with the HUGEPTRS option, all pointers are 64-bit and longs become 8 bytes in size. The debugger will honor these rules when using constants in expressions in a module compiled with HUGEPTRS.  [cautionend]

The Register window displays 64-bit general purpose register values and all sixteen of the floating-point registers if they are available. The Register window also indicates AMODE64. The Dump and Watch windows will accept 64-bit pointer expressions. Note that the Dump window displays only the bottom 8 bytes of the address when Rel: is set to N (no). It is best to set Rel: to Y (yes) when dumping memory above the bar.

You can use the cast operator to convert from a 31-bit pointer type to a 64-bit pointer type using the _ _huge type-name modifier. Similarly, you can convert from a 64-bit pointer type to a 31-bit pointer type using the _ _near type-name modifier.

See 64-Bit Support and 64-Bit Support for more information on the 64-bit support that has been added to SAS/C for Release 7.50.


Chapter Contents

Previous

Next

Top of Page

Copyright © 2004 by SAS Institute Inc., Cary, NC, USA. All rights reserved.