![]() Chapter Contents |
![]() Previous |
![]() Next |
| SAS/C Debugger Changes for Release 7.50 |
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:
Display Namespaces
n{amespc}
| Format 1: namespc | |
| Format 2: namespc full | |
| Format 3: namespc NAMESPACE-NAME | |
| Format 4: namespc NAMESPACE-NAME TYPE-INTEGER |
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. |
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.
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]](../common/images/cautend.gif)
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.