| Title: | DECmcc user notes file. Does not replace IPMT. |
| Notice: | Use IPMT for problems. Newsletter location in note 6187 |
| Moderator: | TAEC::BEROUD |
| Created: | Mon Aug 21 1989 |
| Last Modified: | Wed Jun 04 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 6497 |
| Total number of notes: | 27359 |
I'm debugging an AM, and have sometimes problems with AES variables (when using MCC$AES_XXX routines). I would appreciate to have a MCC$AES_DUMP routine (equivalent of MCC$ILV_DUMP for AES structures) to check all the fields of an AES. I know this can be coded using some MCC$AES_DEPTH and MCC$AES_GET calls, but I'm a bit lazy and I'm sure this would be usefull for every MCC$AES_XXX routine caller. Have you got this and do you plan to make it public or did I miss it somewhere (perhaps there is another way to do it) ? Pierre.
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 149.1 | TOOK::SWIST | Jim Swist LKG2-2/T2 DTN 226-7102 | Fri Jun 08 1990 10:13 | 6 | |
I'm not saying we shouldn't do this but the AES structure is
supposed to be opaque with regard to the caller of the AES routines.
If we released a tool to dump the AES *fields* we would break
the opaqueness. A tool which logically dumped the AES in an
implementation-independent format would be a better idea.
| |||||
| 149.2 | Depends on what version you are running. | TOOK::GUERTIN | Wherever you go, there you are. | Fri Jun 08 1990 10:48 | 12 |
What version of MCC are you running? If you are running the latest
version (UT0.1.1 ?) try :
DBG> SET IMAGE MCC$KERNEL_SHR
DBG> SET MODULE MCC$AES
DBG> CALL MCC$AES_DUMP( address-of-AES-goes-here )
As Jim noted in the previous note, this is a generic non-implementation
specific display of the AES. So it may not be *exactly* what you want.
-Matt.
A
| |||||
| 149.3 | Thanks, but... | TENERE::LAVILLAT | Fri Jun 08 1990 11:39 | 10 | |
Thanks, that's exactly what I wanted. I'm unfortunatly running T1.0.0 version and did not found any MCC$AES_DUMP routine in the MCC$KERNEL_SHR image. So the best is wait for the next update... Pierre. | |||||
| 149.4 | Can't TBD do much of this? | MKNME::DANIELE | Fri Jun 08 1990 11:41 | 0 | |
| 149.5 | there are uses | GOSTE::CALLANDER | Mon Jun 11 1990 12:07 | 15 | |
Mike,
TBD can do some of it but the problem is if you are running from
another PM (like the TRM) it is useful to be able to turn on
a logical and have your code dump the information; or from the
debugger be able to do a set image and call the routine directly
to validate a parameter. I know this later is used heavily in our
debugging.
Also note that the TRM dump (under the control of the MCC$TRM_PM
logical in UT1) will be udated in the next release to handle the
dumping of constructed data types as instances.
jill
| |||||
| 149.6 | This ugly but it works for me. Your mileage may vary. | COOKIE::KITTELL | Richard - Architected Info Mgmt | Sat Sep 01 1990 15:08 | 66 |
/*
* D U M P _ A E S
*
* Call this with the address of the handle. That is, if you have
*
* MCC_A_AES entity;
*
* DBG>eval/addr entity
* DBG>call dump_aes (xxxxxxxxxx)
*/
static dump_aes (handle)
MCC_A_AES *handle;
{
unsigned long depth, status, i, class, wild_type, wild_depth;
MCC_T_FullName val_buf;
MCC_T_Descriptor value =
{
sizeof (MCC_T_FullName), DSC_K_DTYPE_T, DSC_K_CLASS_S, val_buf,
sizeof (MCC_T_FullName), 0, 1, 0, 0, 0
}
;
/* Display the depth of the entity spec and any wildcard */
status = mcc_aes_depth (handle, &depth);
if (BAD(status)) return (status);
printf ("%d CI Pairs in Entity Spec, ", depth);
wild_depth = 0;
status = mcc_aes_wild (handle, &wild_depth, &wild_type);
if (BAD(status)) return (status);
switch (wild_type)
{
case MCC_K_AES_NOT_WILD:
printf ("No Wildcard\n");
break;
case MCC_K_AES_CLASS_WILD:
printf ("Wildcarded Class at Depth %d\n", wild_depth);
break;
case MCC_K_AES_INSTANCE_FULL:
printf ("Full Instance Wildcard at Depth %d\n", wild_depth);
break;
case MCC_K_AES_INSTANCE_PARTIAL:
printf ("Partial Instance Wildcard at Depth %d\n", wild_depth);
break;
default:
printf ("Unknown Wildcard Type\n");
break;
}
/* For each CI pair, display everything we know about it */
for (i=0;i<depth;i++)
{
value.mcc_w_curlen = value.mcc_w_maxstrlen;
status = mcc_aes_get (handle, &i, &class, &value);
if (BAD(status)) return (status);
printf (" %d: Class: %d DataType: %d Length: %d Id: %d",
i, class, value.mcc_l_dt, value.mcc_w_curlen,
value.mcc_l_id);
printf (" Flags: %d\n", value.mcc_b_flags);
}
return (status);
}
| |||||
| 149.7 | Good job!! | VERS::PETROU | Thu Mar 07 1991 12:18 | 5 | |
Very good example. It's a very good help... Regards, Philippe. | |||||