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 11: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 11: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 12: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 12:41 | 0 | |
149.5 | there are uses | GOSTE::CALLANDER | Mon Jun 11 1990 13: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 16: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. |