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
.
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.