____________________________________________________ OpenVMS Debugger Version X7.4-020 Release Notes February 2004 This document describes the major changes contained in OpenVMS Debugger Network Kit ADB074-020 (Alpha) and DBG074-020 (VAX). This kit supercedes the ADB073 and DBG073 kit. Software Version: OpenVMS Debugger Version X7.4-020 Hewlett-Packard Company Palo Alto, California ________________________________________________________________ © 2004 Hewlett-Packard Development Company, L.P. HP, the HP logo, Alpha, OpenVMS, Tru64, VAX, and VMS are trademarks of Hewlett Packard Company. Intel, Intel Inside, and Itanium are trademarks of Intel Corporation in the U.S. and/or other countries. Proprietary computer software. Valid license from HP required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license. The information contained herein is subject to change without notice. The only warranties for HP products and services are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. HP shall not be liable for technical or editorial errors or omissions contained herein. ZK4538 The HP OpenVMS documentation set is available on CD-ROM. This document was prepared using DECdocument, Version 3.3- 1b. _________________________________________________________________ Contents Preface................................................... v 1 Installation 2 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only)........... 2-1 2.1.1 Debugger ANALYZE/PROCESS_DUMP Command..... 2-1 2.1.2 Debugger SDA Command...................... 2-3 2.1.3 DCL ANALYZE/CRASH_DUMP Command............ 2-4 2.1.4 Analyzing Process Dumps on Different Systems................................... 2-4 2.1.5 Forcing a Process Dump.................... 2-5 2.1.6 Understanding Process Dumps............... 2-5 2.1.6.1 Understanding Privileged Users and Access to Process Dumps (Alpha Only).... 2-6 2.1.6.2 Granting Access to Process Dumps (Alpha Only)................................... 2-7 2.1.6.3 Restricting Access to Process Dumps (Alpha Only)............................ 2-7 2.2 P2 Static Data Support (Alpha Only)........... 2-9 2.3 EXAMINE/VARIANT Command....................... 2-11 2.4 SHOW CALLS/IMAGE.............................. 2-13 2.5 Enhanced Support for C++...................... 2-15 2.5.1 Character String Arrays in C and C++...... 2-15 iii 3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.1 SET MODULE Command............................ 3-1 3.2 SET EVENT ADA Command......................... 3-1 3.3 Register View................................. 3-1 3.4 Enumerated Lists.............................. 3-2 3.5 Enumeration Literals As Class Members......... 3-2 3.6 Global Symbol Table Search.................... 3-2 3.7 Global Section Watchpoints (Alpha Only)....... 3-3 3.8 Source View................................... 3-3 3.9 Array Elements Displayed Differently on VAX and Alpha..................................... 3-3 3.10 Wrong Address................................. 3-3 3.11 Cross Image Symbol Fixup...................... 3-3 3.12 Interrupting Program Execution in DECwindows Motif Interface............................... 3-4 3.13 Nested Anonymous Unions....................... 3-4 3.14 Anonymous Structs in C........................ 3-4 3.15 Symbolization of C++ References .............. 3-4 3.16 Enumerators as Class Symbols.................. 3-5 3.17 Inline Code................................... 3-5 3.18 Symbols in Nested Ada Packages/ada_symbols.... 3-5 3.19 Symbol Table Errors........................... 3-6 3.20 Debugger Runs out of Memory at Startup........ 3-6 3.21 Non-Unique COBOL Symbol Lookups (VAX Only).... 3-6 3.22 DECwindows Source View Update................. 3-6 3.23 SHOW SYMBOL IN Clause......................... 3-7 3.24 Corrupted Stack Errors (Alpha Only)........... 3-7 3.25 Just-in-Time Debugging........................ 3-7 3.26 Heap Analyzer Hangs Corrected................. 3-7 3.27 Array Elements in Pascal ..................... 3-7 3.28 Debugger Installation UNSET/SYSTEM Problem.... 3-7 3.29 Debugging Protected Images.................... 3-8 3.30 Register View Fix............................. 3-8 3.31 SET BREAK %LINE Command....................... 3-8 3.32 EVALUATE/ADDRESS Command...................... 3-8 3.33 Thread Entry Fix.............................. 3-8 3.34 Multithread Program Hangs..................... 3-8 3.35 ACCVIO Debugging Ada Programs................. 3-8 3.36 DECwindows Motif GUI Bug...................... 3-9 3.37 Watchpoint Bug................................ 3-9 3.38 SET TRACE/LINE/INTO Command Fix............... 3-9 3.39 /CALL Fix..................................... 3-9 3.40 CONNECT Command Kills Process................. 3-9 iv 3.41 Inlined Routines Fix.......................... 3-9 3.42 Source View Fix............................... 3-9 3.43 Debug Symbol Table Search..................... 3-10 3.44 Activate and Deactivate Commands in Breakpoint View ......................................... 3-10 3.45 EXAMINE Command in BLISS Program.............. 3-10 3.46 SHOW SOURCE Command in Source View............ 3-10 3.47 Unconstrained Arrays in Ada Programs.......... 3-10 3.48 Evaluating Sets in Pascal..................... 3-11 3.49 Examine Command in Ada Programs............... 3-11 3.50 Command View Update........................... 3-11 3.51 SHOW SYMBOL/FULL in C++ Programs.............. 3-11 4 Major Bugs Fixed in the OpenVMS Debugger Version X7.4 4.1 OpenVMS Version 7.3-2 Installation Requirement for Debugger.................................. 4-1 4.2 User Mode ASTs Became Disabled After a CALL Command....................................... 4-1 4.3 GUI Data Corruptions Result from Debugger Main Image Threading............................... 4-1 4.4 Erroneous PC and PS Values at Exception Break......................................... 4-2 4.5 Incorrect Addresses in Symbol Definitions..... 4-2 4.6 Errors Reported for Rerun Commands in GUI Mode.......................................... 4-2 4.7 Alpha Fortran 64-Bit Pointer Problem Fixed.... 4-2 4.8 SHOW SCOPE Command Produced Incomplete Information................................... 4-3 4.9 Process Memory Loss when Setting Breakpoints Fixed......................................... 4-3 4.10 Source Code Debugger Hangs at Start Up........ 4-3 Index v _________________________________________________________________ Preface This document describes the new features and bug fixes of the OpenVMS Debugger Version X7.4-020. Intended Audience This document is for programmers who: o Are familiar with the OpenVMS Debugger o Are familiar with Microsoft Windows o Are familiar with C++ o Have access to the latest C++ documentation The OpenVMS Debugger on OpenVMS Alpha systems can access all the extended memory made available by the 64-bit processing of the OpenVMS Alpha operating system. Hence, you can examine and manipulate data in the complete 64-bit address space. The OpenVMS Debugger has been internationalized. For Asian users, the debugger's DECwindows Motif, command line, and screen mode interfaces can be used with multibyte characters. You can use the debugger to debug code only in user mode. You cannot debug code in supervisor, executive, or kernel modes. v Document Structure This document is organized as follows: o Chapter 1 describes the installation process for the ADB074 Network Debugger Kit. o Chapter 2 describes the new features originally introduced in the ADB073 Network Debugger Kit. o Chapter 3 describes the bugs fixed in the ADB073 Network Debugger Kit. o Chapter 4 describes the bugs fixed in the ADB074 Network Debugger Kit. Related Documents See also the OpenVMS Debugger Manual. For additional information about HP OpenVMS products and services, visit the following World Wide Web address: http://www.hp.com/go/openvms Reader's Comments HP welcomes your comments on this manual. Please send comments to either of the following addresses: Internet openvmsdoc@hp.com Postal Hewlett-Packard Company Mail OSSG Documentation Group, ZKO3-4/U08 110 Spit Brook Rd. Nashua, NH 03062-2698 How to Order Additional Documentation For information about how to order additional documentation, visit the following World Wide Web address: http://www.hp.com/go/openvms/doc/order vi 1 _________________________________________________________________ Installation This section contains an example installation of the OpenVMS Debugger Version X7.3 field test debugger from the ADB074 Network Kit. ________________________ Note ________________________ Installations on OpenVMS V7.3-2 systems require OpenVMS Debugger Version X7.4-020 or later. ______________________________________________________ This kit requires an installed DCE for the debugger client/server configuration. If DCE is not installed, the server portion of the debugger cannot be linked and a warning is printed during the installation. For example: %ADX-W-LINKABORT, NO DEBUGSRVSHR linked, SYS$LIBRARY:DCE$LIB_SHR missing (install DCE) You can ignore this message. The normal operation of the debugger is not affected. However, the client/server mode will NOT be operational. If DECWindows Motif V1.2 or later is installed, a new Heap Analyzer will be also installed on V7.1 or later systems. If you later upgrade your system, or if you later install DCE or MOTIF, then you must reinstall the X7.4 debugger with this installation kit. This pre-V7.3-2 installation replaces and upgrades the TRACE facility. On V7.1-2 and later systems, this kit will also optionally install the following new (as of V7.3) process dump and process dump analysis tools: New process dump analysis DEBUG kernel New System Dump Anaylzer (SDA) New IMGDMP (image dump) Installation 1-1 Installation New System Code Debugger (SCD) New System Dump Debugger (SDD) Old-style process dumps are NOT compatible with this new style. You can analyze new-style process dumps with the new kept debugger ANALYZE/PROCESS_DUMP/IMAGE_PATH command or with the new System Dumper Analyzer (SDA) command ANALYZE/CRASH. You can also still use the DCL ANALYZE/PROCESS_DUMP command. The debugger and (optional) process dump tools installed by this kit: o Replace any previous network debugger kit that are already installed o Coexist with your regular system (version 7.1-2 and later) supplied ones; they do not replace them. The installation process prompts you to remove any earlier network kit debuggers, such as V72X. You may receive the following error messages for TRACE and IMGDMP during setup for the IVP: %INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS'... SYSTEM-F-NOPRIV, insufficient privilege or object protection violation You can ignore these errors. However, to correct TRACE and IMGDMP installation, you must run SYS$STARTUP:DEBUG$STARTUP_V74 from a privileged account after vmsinstal completes. $ @SYS$UPDATE:VMSINSTAL OpenVMS AXP Software Product Installation Procedure X6T4-PLU It is 13-APR-2001 at 09:52. Enter a question mark (?) at any time for help. %VMSINSTAL-W-NOTSYSTEM, You are not logged in to the SYSTEM account. %VMSINSTAL-W-ACTIVE, The following processes are still active: BISHOP * Do you want to continue anyway [NO]? y * Are you satisfied with the backup of your system disk [YES]? * Where will the distribution volumes be mounted: bulova::dbg$public: 1-2 Installation Installation Enter the products to be processed from the first distribution volume set. * Products: adb074 * Enter installation options you wish to use (none): The following products will be processed: ADB V7.4 Beginning installation of ADB V7.4 at 09:52 %VMSINSTAL-I-RESTORE, Restoring product save set A ... %VMSINSTAL-I-RELMOVED, Product's release notes have been moved to SYS$HELP. *********************************************************************** OpenVMS Alpha Debug V7.4 Copyright 1978 Compaq Computer Corporation COMPAQ Registered in U.S. Patent and Trademark Office. All other product names mentioned herein may be trademarks or registered trademarks of their respective companies. Confidential computer software. Valid license from Compaq required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license. Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this publication is subject to change without notice and is provided "AS IS" WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK ARISING OUT OF THE USE OF THIS INFORMATION REMAINS WITH RECIPIENT. IN NO EVENT SHALL COMPAQ BE LIABLE FOR ANY DIRECT, CONSEQUENTIAL, INCIDENTAL, SPECIAL, PUNITIVE OR OTHER DAMAGES WHATSOEVER (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION OR LOSS OF BUSINESS INFORMATION), EVEN IF COMPAQ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. The limited warranties for Compaq products are exclusively set forth in the documentation accompanying such products. Nothing herein should be construed as constituting a further or additional warranty. *********************************************************************** This kit installs Debug version X7.4. It will install on Alpha OpenVMS V6.2 to V7.3 systems. Installation 1-3 Installation This kit requires an installed DCE for its client/server configurations (see release notes). If DCE is not installed, the "server" portion of the debugger cannot be linked and a warning is printed during the installation, for example, "%ADX-W-LINKABORT, NO DEBUGSRVSHR linked, SYS$LIBRARY:DCE$LIB_SHR missing (install DCE)". You can safely ignore this message. The normal operation of the debugger is not affected, however, the client/server mode will NOT be operational. If DECWindows Motif V1.2 or later is installed a new Heap Analyzer will be also installed on V7.1 or later systems. If your system is later upgraded from V6 to V7 or if DCE or MOTIF are later installed, then this kit MUST be rerun, i.e. the X7.4 debuggers MUST be reinstalled. On V7.1-2 and later systems this kit will also optionally install new process dump and process dump analysis tools: new process dump analysis DEBUG kernel, new SDA, and new IMGDMP (image dump). Old style process dumps are NOT compatible with this new style. New process dumps can be analyzed through the new kept debugger ANALYZE/PROCESS_DUMP/IMAGE_PATH command (enter it at the DBG> prompt). The DCL ANALYZE/PROCESS_DUMP command can also be used to invoke the debugger process dump analysis. You can aslo view new process dumps with the new SDA through the DCL ANALYZE/CRASH command. If you chose to install the new process dump and process dump analysis tools, then new System Code and System Dump Debuggers (SCD and SDD) ARE also installed. The debuggers and (optionally) process dump tools installed by this kit coexist with your regular system supplied ones, that is, it does NOT replace them. Procedures are included that will allow you to set up to these new tools or the regular system ones. However, the kit will replace any previous V7.3 versions that may be installed AND it will request to remove any earlier network kit debuggers, e.g. V72X. "%INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS'... SYSTEM-F-NOPRIV, insufficient privilege or object protection violation" errors for TRACE and IMGDMP may occur during setup for the IVP. These errors can be safely ignored for the IVP (which does not actually test TRACE or IMGDMP). However, to correct TRACE and IMGDMP installation SYS$STARTUP:DEBUG$STARTUP_V74 must be run from a privileged account after vmsinstal completes. 1-4 Installation Installation %ADB-I-NOVERSION, Unable to determine operating system software V version number. * Do you want to install the new process dump tools [YES]? This installation should take 15 minutes or less. * Do you want to run the IVP after the installation [YES]? * Do you want to run the interactive DECwindows Motif IVP? [NO]? * Do you want to purge files replaced by this installation [YES]? * Do you want to remove obsolete versions of network debuggers (recommended) [YES]? %ADB-I-DONEASK, No further questions will be asked during this installation. %VMSINSTAL-I-RESTORE, Restoring product save set B ... %VMSINSTAL-I-RESTORE, Restoring product save set C ... %VMSINSTAL-I-RESTORE, Restoring product save set D ... %ADB-I-ENDRESTORE, All Debugger savesets have been restored. %ADB-I-LINKING, Linking V7 images. %ADB-I-LINKDONE, DEBUGSHR has been linked. %ADB-I-LINKDONE, DEBUG has been linked. %ADB-I-LINKDONE, DEBUGUISHR has been linked. %ADB-I-LINKDONE, DEBUGSRVSHR has been linked. %ADB-I-LINKDONE, HA_MAIN has been linked. %ADB-I-LINKDONE, HA_KERNEL has been linked. %ADB-I-LINKDONE, TRACE has been linked. %ANALYZE-I-ERRORS, VMI$ROOT:[SYS$LDR]SYS$BASE_IMAGE.EXE;1 0 errors %ADB-I-LINKDONE, SDA has been linked. %ADB-I-LINKDONE, Process dump DEBUG kernel has been linked. %ADB-I-LINKDONE, IMGDMP, IMGDMP_RIGHTS, and PRGDEVMSG have been linked. %ADB-I-LINKDONE, System dump DEBUG kernel has been linked. %ADB-I-LINKDONE, System code DEBUG kernel has been linked. %ADB-I-LINKDONE, Force process dump utility has been linked. %ADB-I-CLEANUP, Cleanup has been performed. %ADB-I-PROHELP, Providing Debugger Help files... %ADB-I-PROMSG, Providing Debugger message image... %ADB-I-PROMSG, Providing Debugger .CLD file... %ADB-I-PROEXE, Providing Debugger files... %ADB-I-PROEXE, Providing Heap Analyzer files... %ADB-I-PROEXE, Providing new process dump tools... %ADB-I-UNINSTALL, Uninstalling obsolete network kit debuggers %ADB-I-PROMSG, Providing startup files ... If you want the debuggers installed by this kit to be the default system debuggers: - Add the following line to the system startup procedure: Installation 1-5 Installation $ @SYS$STARTUP:DEBUG$STARTUP_V74.COM V74 You should remove any other *DEBUG$STARTUP*.COM reference. - Enter the following DCL command from a privileged account on each and every Alpha node of your VMScluster that you wish to upgrade: @SYS$STARTUP:DEBUG$STARTUP_V74.COM V74 Note that this is a /SYSTEM table setup (also see SYS$STARTUP:DEBUGSETUP.COM) and modifies your DCL command tables. The DCL DEBUG /CLIENT and /SERVER switches on pre V7.2 systems may not be seen and the /KEPT invocation may not be redirected for active processes (until they are logged-off and restarted). If you want the regular system supplied debuggers (and process dump tools) to be the default, then do the same as above but use "VMS" as the input parameter, for example: @SYS$STARTUP:DEBUG$STARTUP_V74.COM VMS Users can also individually and dynamically switch debuggers (and process dump tools) by using SYS$STARTUP:DEBUGSETUP.COM. It's input options are VMS, V74, or UNSET. It also needs the logical table /JOB or /SYSTEM switch. For example: @SYS$STARTUP:DEBUGSETUP.COM V74 /JOB %ADB-I-PROIVP, Providing test files for IVP... The Debugger IVP has been moved to the SYS$TEST directory. To run the IVP after installation, first make sure you are setup to use the V74 debugger, e.g. execute the command "@SYS$STARTUP:DEBUGSETUP V74 /JOB" Then, run the character cell IVP by executing the command "@SYS$TEST:DBG$IVP.COM" or, if DECWindows Motif has been installed on your system, run the interactive DECWindows Motif IVP by executing the command "@SYS$TEST:DBG$DW$IVP.COM" 1-6 Installation Installation %ADB-I-INSTALLDONE, OpenVMS Alpha Debug V7.4 installation done %VMSINSTAL-I-MOVEFILES, Files will now be moved to their target directories... %INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS' DISK$CMOVEQ_SYS:TRACE_V74.EXE -SYSTEM-F-NOPRIV, insufficient privilege or object protection violation %INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS' DISK$CMOVEQ_SYS:IMGDMP_V74.EXE -SYSTEM-F-NOPRIV, insufficient privilege or object protection violation %INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS' DISK$CMOVEQ_SYS:IMGDMP_V74.EXE -SYSTEM-F-NOPRIV, insufficient privilege or object protection violation %INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS' DISK$CMOVEQ_SYS:TRACE_V74.EXE -SYSTEM-F-NOPRIV, insufficient privilege or object protection violation Beginning the Debug V7.4 Verification Procedure Copyright 1988 Compaq Computer Corporation Debug verification procedure successful. Installation of ADB V7.4 completed at 10:05 Adding history entry in VMI$ROOT:[SYSUPD]VMSINSTAL.HISTORY Creating installation data file: VMI$ROOT:[SYSUPD]ADB074.VMI_DATA Enter the products to be processed from the next distribution volume set. * Products: VMSINSTAL procedure done at 10:15 Installation 1-7 Installation $ @SYS$STARTUP:DEBUG$STARTUP_V74.COM V74 %DCL-I-SUPERSEDE, previous value of DEBUG has been superseded %DCL-I-SUPERSEDE, previous value of DEBUGSHR has been superseded %DCL-I-SUPERSEDE, previous value of DBGTBKMSG has been superseded %DCL-I-SUPERSEDE, previous value of DBG$HELP has been superseded %DCL-I-SUPERSEDE, previous value of DEBUGAPPCLASS has been superseded %DCL-I-SUPERSEDE, previous value of TRACE has been superseded %DCL-I-SUPERSEDE, previous value of DEBUGSRVSHR has been superseded %DCL-I-SUPERSEDE, previous value of VMSDEBUGUIL has been superseded %DCL-I-SUPERSEDE, previous value of DBG$UIHELP has been superseded %DCL-I-SUPERSEDE, previous value of DEBUGUISHR has been superseded %DCL-I-SUPERSEDE, previous value of DBG$HA_MAIN has been superseded %DCL-I-SUPERSEDE, previous value of DBG$HA_KERNEL has been superseded %DCL-I-SUPERSEDE, previous value of DBG$HA has been superseded %DCL-I-SUPERSEDE, previous value of IMGDMP has been superseded %DCL-I-SUPERSEDE, previous value of PRGDEVMSG has been superseded %DCL-I-SUPERSEDE, previous value of SDA$SHARE has been superseded %DCL-I-SUPERSEDE, previous value of DBGHK$PRCDUMP_KERNEL has been superseded %DCL-I-SUPERSEDE, previous value of ANALIMDMP has been superseded %DCL-I-SUPERSEDE, previous value of DBGHK$SYSDUMP_KERNEL has been superseded %DCL-I-SUPERSEDE, previous value of DBGHK$HOST_KERNEL has been superseded $ 1-8 Installation 2 _________________________________________________________________ New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) OpenVMS Debugger Version X7.3 contains new tools for processing dump files. Note that these new-style process dump and process dump analysis tools are not compatible with the old-style process dumps. That is, if you have a problem you wish to analyze with the new tools then you must generate a new process dump with the new process dump image. You can switch between the old and new process dump tools by using SYS$STARTUP:DEBUGSETUP.COM. Its input options are VMS, V74, or UNSET. You must also specify the logical table /JOB or /SYSTEM switch. For example: @SYS$STARTUP:DEBUGSETUP.COM V74 /JOB ________________________ Note ________________________ The backported versions of the new process dump tools can be installed on OpenVMS Version 7.2-1 and Version 7.1-2 systems. ______________________________________________________ The following sections describe the new tools. 2.1.1 Debugger ANALYZE/PROCESS_DUMP Command The debugger has a new command: ANALYZE/PROCESS_DUMP/IMAGE_PATH=[directory-spec] dumpfile. This command is available only in the kept debugger. Opens a process dump for analysis with the System Code Debugger (SCD). The qualifier /PROCESS_DUMP is required and distinguishes this command from the one that invokes the System Dump Debugger (SDD), ANALYZE/CRASH_DUMP. New Features in the OpenVMS Debugger Version X7.3 2-1 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) The qualifier /IMAGE_PATH=directory-spec is optional, and specifies the search path the debugger is to use to find the debugger symbol table (DST) files. The debugger builds an image list from the saved process image list. When you set an image (the main image is automatically set), the debugger attempts to open that image in order to find the DSTs. The debugger first looks for the DST file in the directory that contains the dump file. If that fails and you include the /IMAGE_PATH=directory-spec qualifier, the debugger searches for the .DST file in the specified directory. The debugger attempts to translate directory-spec as the logical name of a directory search list. If it fails, the debugger then interprets directory-spec as a directory specification and searches that directory for matching .DSF or .EXE files. A .DSF file takes precedence over an .EXE file. The name of the .DSF or .EXE file must match the image name. If the above procedure fails, the debugger also searches directory SYS$SHARE and then directory SYS$MESSAGE. If the debugger fails to find a DST file for the image, symbolic information available to the debugger is limited to global and universal symbol names. The debugger checks for link date-time mismatches between the dump file image and the DST file and issues a warning if one is discovered. The parameter dumpfile is the name of the process dump file to be analyzed. Note that the process dump file type must be .DMP and the DST file type must be either .DSF or .EXE. For example: $ DEBUG/KEEP OpenVMS Alpha Debug64 Version X7.3 2-2 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) DBG> SET SOURCE/LATEST my_disk$:[my_dir] DBG> ANALYZE/PROCESS/IMAGE_DUMP=my_disk$:[my_dir] my_disk$:[my_dir]wecrash.dmp %SYSTEM-F-IMGDMP, dynamic image dump signal at PC=001C0FA0B280099C, PS=001C003C break on unhandled exception preceding WECRASH\th_run\%LINE 26412 in THREAD 8 26412: if (verify) { DBG> SET RADIX HEXEXADECIMAL; EXAMINE PC WECRASH\th_run\%PC: 0000000000030244 DBG> 2.1.2 Debugger SDA Command The SDA command allows you to use the System Dump Analyzer (SDA) within the debugger for the following tasks: o System code debugging with the System Code Debugger (SCD) o System dump analysis with the System Dump Debugger (SDD) o Process dump analysis with the System Dump Analyzer (SDA) This gives you access to all SDA commands within the debugging session. When you exit SDA, you return to the same debugging session. Note that you do not have access to debugger commands within the SDA session. ________________________ Note ________________________ The SDA command is not available when debugging user- mode programs. ______________________________________________________ For example: DBG> SDA OpenVMS (TM) Alpha process dump analyzer SDA> .. . . SDA> EXIT DBG> New Features in the OpenVMS Debugger Version X7.3 2-3 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) 2.1.3 DCL ANALYZE/CRASH_DUMP Command You can also invoke the new SDA with the DCL ANALYZE/CRASH_ DUMP command, as follows: $ ANALYZE/CRASH_DUMP mycrash.dmp OpenVMS (TM) Alpha system dump analyzer ...analyzing a compressed process dump... Dump taken on 19-APR-2001 12:03:40.95 SDA> .. . . SDA> EXIT $ ________________________ Note ________________________ You may experience difficulty analyzing system dumps or running systems with the SDA included in the ADB073-017 network kit. You can temporarily revert to the original SDA by entering the following command before the ANALYZE/SYSTEM or ANALYZE/CRASH_DUMP command. $ DEFINE/USER SDA$SHARE SYS$SHARE:SDA$SHARE.EXE ______________________________________________________ See the HP OpenVMS DCL Dictionary: A-M for more information about the DCL ANALYZE/CRASH_DUMP command. 2.1.4 Analyzing Process Dumps on Different Systems You can analyze a process dump file on a system different from the one on which it was generated. However, if there is a base image link date/time mismatch between the generating system and analyzing system, you must copy SYS$BASE_IMAGE.EXE from the generating system and point to it with the SDA$READ_DIR logical name. For example: $ COPY other_node::SYS$LOADABLE_IMAGES:SYS$BASE_IMAGE.EXE my_disk$:[my_dir] $ DEFINE/USER SDA$READ_DIR my_disk$:[my_dir],SYS$SYSROOT:[SYS$LDR],SYS$SYSROOT:[SYSLIB] $ ANALYZE/PROCESS_DUMP mycrash.dmp 2-4 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) For threaded process dump analysis on system different from the one it was generated on, it may also be necessary to copy and logically point to the generating system's PTHREAD$RTL and PTHREAD$DBGSHR (DECthtread debug assistant). For example: $ COPY other_node::SYS$LOADABLE_IMAGES:SYS$BASE_IMAGE.EXE my_disk$:[my_dir] $ COPY other_node::SYS$SHARE:PTHREAD$RTL.EXE my_disk$:[my_dir] $ COPY other_node::SYS$SHARE:PTHREAD$DBGSHR.EXE my_disk$:[my_dir] $ DEFINE/USER SDA$READ_DIR my_disk$:[my_dir],SYS$SYSROOT:[SYS$LDR],SYS$SYSROOT:[SYSLIB] $ DEFINE/USER PTHREAD$RTL my_disk$:[my_dir]PTHREAD$RTL.EXE $ DEFINE/USER PTHREAD$DBGSHR my_disk$:[my_dir]PTHREAD$DBGSHR.EXE $ ANALYZE/PROCESS_DUMP mycrash.dmp 2.1.5 Forcing a Process Dump You can force a process dump with the utility SYS$COMMON:[SYSEXE]FORCE_PROCESS_DUMP.EXE. Running FORCE_ PROCESS_DUMP.EXE immediately generates dump file of the specified process. The process should continue to run after the dump file is written. You can specify the target process with either PID or a process name. A PID takes precedence over a process name. The target process must be a user process on the same node and in the same UIC group. The syntax is as follows: FORCE_PROCESS_DUMP [PID] [PROCESS_NAME] For example, both of the following commands are valid: $ FORCE_PROCESS_DUMP.EXE 22C04463 $ FORCE_PROCESS_DUMP.EXE "" user-1 2.1.6 Understanding Process Dumps When a single process fails but the operating system is still running, the system can create a process dump that contains information about the process to assist in determining what caused the process to fail. By default, process dumps are written to the current default directory of the user. You can override this by defining the logical name SYS$PROCDMP to identify an alternate directory path. Note that the name of the process dump file is always the same as the name of the main image active at the time the process dump is written, with the file extension .DMP. New Features in the OpenVMS Debugger Version X7.3 2-5 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) On Alpha systems, a process dump is either complete or partial. A complete process dump contains all of process space and all process-pertinent data from system space. A partial process dump contains only user-readable data from process space and only those data structures from system space that are not deemed sensitive. Privileged or protected data, such as an encryption key in third-party software, might be considered sensitive. On Alpha systems, you can force a dump to be written for another process with the DCL command SET PROCESS/DUMP=NOW process-spec. This command causes the contents of the address space occupied by process-spec to be written immediately to the file named image-name.DMP in the current directory of process-spec. For more information about the DCL command SET PROCESS/DUMP, refer to the HP OpenVMS DCL Dictionary: N-Z. 2.1.6.1 Understanding Privileged Users and Access to Process Dumps (Alpha Only) For this discussion, a privileged user is one who satisfies one of the following conditions: o Has one or more of the privileges CMKRNL, CMEXEC, SYSPRV, READALL, or BYPASS o Is a member of a system UIC group (by default [10,n] or lower). Such users are treated as though they hold SYSPRV privilege. Holders of CMKRNL or CMEXEC can write complete process dumps. Holders of any of the other privileges mentioned above can read a process dump wherever it has been written. In general, nonprivileged users should not be able to read complete process dumps, and by default they cannot do so. However, certain situations require that a nonprivileged user be able to read a complete process dump. Other situations require that a nonprivileged user be able to create a complete process dump but be able to read only a partial process dump. 2-6 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) Rights identifier IMGDMP$READALL enables a nonprivileged user to read a complete process dump. Rights identifier IMGDMP$PROTECT protects a complete process dump from being read by the nonprivileged user that created the process dump. These rights identifiers are created during the installation of OpenVMS by the image SYS$SYSTEM:IMGDMP_ RIGHTS.EXE, which is also run automatically during system startup to ensure that these rights identifiers exist with the correct values and attributes. If these rights identifiers have been deleted, you can run SYS$SYSTEM:IMGDMP_RIGHTS.EXE to recreate them. For example: $ RUN SYS$SYSTEM:IMGDMP_RIGHTS %PROCDUMP-I-CREATED, rights identifier IMGDMP$READALL successfully created %PROCDUMP-I-CREATED, rights identifier IMGDMP$PROTECT successfully created Note that IMGDMP$READALL has no attributes, but IMGDMP$PROTECT is created with the RESOURCE attribute. 2.1.6.2 Granting Access to Process Dumps (Alpha Only) To allow a nonprivileged user to write and read complete process dumps, grant the rights identifier IMGDMP$READALL to the user. If the IMGDMP$READALL rights identifier does not exist, run the image SYS$SYSTEM:IMGDMP_RIGHTS.EXE to create it (see Section 2.1.6.1). Then use AUTHORIZE to grant the rights identifier to the user. For example: $ DEFINE /USER SYSUAF SYS$SYSTEM:SYSUAF.DAT !if necessary $ RUN SYS$SYSTEM:AUTHORIZE UAF> GRANT /IDENTIFIER IMGDMP$READALL UAF> EXIT Note that the user must log out and log in again to be able to exercise the rights identifier. A nonprivileged user with rights identifier IMGDMP$READALL can read and write complete process dumps without restriction. 2.1.6.3 Restricting Access to Process Dumps (Alpha Only) You can allow a nonprivileged user to write a complete process dump and at the same time prevent the user from reading that process dump. To do so, perform the following steps: 1. If the IMGDMP$PROTECT rights identifier does not exist, run the image SYS$SYSTEM:IMGDMP_RIGHTS.EXE to create it (see Section 2.1.6.1). New Features in the OpenVMS Debugger Version X7.3 2-7 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) 2. Create a protected directory with rights identifier IMGDMP$PROTECT. For example: $ CREATE /DIRECTORY DKA300:[PROCDUMPS] - /PROTECTION=(S:RWE,O:RWE,G,W) /OWNER_UIC=IMGDMP$PROTECT $ SET SECURITY DKA300:[000000]PROCDUMPS.DIR - /ACL=((DEFAULT_PROTECTION,SYSTEM:RWED,OWNER:RWED,GROUP:,WORLD:), - (IDENTIFIER=IMGDMP$PROTECT,ACCESS=READ+WRITE), - (IDENTIFIER=IMGDMP$PROTECT,OPTIONS=DEFAULT, - ACCESS=READ+WRITE+EXECUTE+DELETE+CONTROL), - (CREATOR,ACCESS=NONE)) 3. Define the executive-mode logical name SYS$PROTECTED_ PROCDMP to point to the protected directory. For example: $ DEFINE /SYSTEM /EXECUTIVE_MODE SYS$PROTECTED_PROCDMP DKA300:[PROCDUMPS] 4. If DISKQUOTA is to be used on the disk containing the protected directory, specify the maximum disk space to be used for process dumps. For example: $ RUN SYS$SYSTEM:SYSMAN SYSMAN> DISKQUOTA CREATE /DEVICE=DKA300 ! if necessary SYSMAN> DISKQUOTA ENABLE /DEVICE=DKA300 ! if necessary SYSMAN> DISKQUOTA ADD IMGDMP$PROTECT /DEVICE=DKA300 /PERMQUOTA=10000 SYSMAN> DISKQUOTA REBUILD /DEVICE=DKA300 ! if necessary SYSMAN> EXIT _______________________ Warning _______________________ Do not grant IMGDMP$PROTECT to any user. It is granted and revoked as needed by SYS$SHARE:IMGDMP.EXE from executive mode while writing a process dump. If you grant it permanently to a user, then that user has access to all process dumps written to the protected directory. ______________________________________________________ You can choose to set up additional ACLs on the protected directory to further control which users are allowed to read and write process dumps there. 2-8 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.1 New Process Dump Tools (Alpha Only) Note that to take a process dump when the image is installed with elevated privileges or belongs to a protected subsystem, the user must hold CMKRNL privilege, and is by definition a privileged user (see Section 2.1.6.1). 2.2 P2 Static Data Support (Alpha Only) This version of the Linker allows the creation of images which contain uninitialized static storage, such as Fortran COMMON areas, in 64-bit address space. The storage is automatically allocated in 64-bit space when an object (.OBJ) file created by a compiler specifies it. See the Fortran documentation for a description of how to take advantage of this expanded static storage space. The Linker places program sections to be allocated in 64- bit space into a special cluster with the name 64BIT_DATA. This cannot be overridden with a CLUSTER option in a Linker options file. At image activation time, the resulting image sections will be allocated starting at the base of process P2 space. Sections allocated in 64-bit address space have a different listing format in the image map created by the Linker, in order to display their larger starting and ending addresses. Such 64-bit addresses in the Image Section Synopsis and Program Section Synopsis sections of the map are split across two lines, to preserve the columnar format of the listing. These sections are given a "Q-" prefix on the base address to indicate that they have 64-bit (quadword) addresses and length fields. In the following example, the psect STAT64_PSC is allocated at 64-bit address 00000000.80000000, ending at 00000000.900001FF. ---------------------------------------------------------------------- Psect Name Module Name Base End Length Align Attributes ---------- ----------- ---- --- ------ ----- ---------- $CODE$ 00020000 000200FB 000000FC ( 252.) OCTA 4 PIC,CON,REL,LCL, SHR, EXE,NOWRT,NOVEC, M S64TEST$MAIN 00020000 000200FB 000000FC ( 252.) OCTA 4 STAT64_PSC Q-00000000 00000000 00000000 OCTA 4 NOPIC,OVR,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,NOM 80000000 900001FF 100001FE ( 268435966.) S64TEST$MAIN Q-00000000 00000000 00000000 OCTA 4 80000000 900001FF 100001FE ( 268435966.) New Features in the OpenVMS Debugger Version X7.3 2-9 New Features in the OpenVMS Debugger Version X7.3 2.2 P2 Static Data Support (Alpha Only) ---------------------------------------------------------------------- Global symbols that reside in 64-bit static space also have a "-Q" suffix in the Symbol Table Listing portion of the map. However, only the low 32-bits of their address is shown in the table. The Image Synopsis section shows the total 64-bit virtual memory allocated separately from the 32-bit space. An example follows. ---------------------------------------------------------- +----------------+ ! Image Synopsis ! +----------------+ Virtual memory allocated: 00010000 0003FFFF 00030000 (196608. bytes, 384. pages) 64-Bit Virtual memory allocated: 00000000 00000000 00000000 80000000 90010000 10010000 (268500992. bytes, 524416. pages) ---------------------------------------------------------------------- Two new error messages may be reported by the Linker for incorrect usage of 64-bit data sections. o 64BNODZRO, images linked with /nodemand_zero cannot contain 64-bit psects This message is reported if /NODEMAND_ZERO is specified on a Link command line and one of the source object files contains a 64-bit static data section. These sections must be demand-zero. o 64BMOD, 64-bit psects must be demand-zero This message is reported if a program section in a source object file has been marked for 64-bit space by the compiler, but contains initialized data. These sections must be demand-zero. This linker operates no differently from previous version of the OpenVMS linker for programs that contain no 64- bit data sections. This linker (LINKER64.EXE) becomes the default system linker when this OpenVMS Debugger kit is installed. To use the prior version of the linker, define the logical name LINK to point to SYS$SYSTEM:LINK.EXE. For example: $ DEFINE LINK SYS$SYSTEM:LINK.EXE 2-10 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.3 EXAMINE/VARIANT Command 2.3 EXAMINE/VARIANT Command The new /VARIANT qualifier to the EXAMINE command enables the debugger to display the correct item when it encounters an anonymous variant. In a C program, a union contains members, only one of which is valid at any one time. When displaying a union, the debugger does not know which member is currently valid. In a PASCAL program, a record with a variant part contains variants, only one of which is valid at any one time. When displaying a record with an anonymous variant part, the debugger does not know which variant is currently valid, and displays all variants by default. You can use the /VARIANT qualifier of the EXAMINE command to select which member of a union (C program) or anonymous variant (PASCAL program) to display. The format is as follows: DBG> EXAMINE /VARIANT=var-selector address-exp DBG> EXAMINE /VARIANT=(var-selector,...) address-exp The variant selector var-selector specifies a name, a discriminant (PASCAL only), or a position; that is, one of the following: o NAME = name-string o DISCRIMINANT = expression o POSITION = expression The /VARIANT qualifier takes a list of zero or more variant selectors. /VARIANT without any variant selectors is the default: the first variant of all anonymous variant lists will be displayed. Each variant selector specifies either the name, the discriminant, or the position of the variant to be displayed. The debugger uses the variant selector as follows: 1. If the debugger encounters an anonymous variable list while displaying address-exp, the debugger uses the variant selector to choose which variant to display. New Features in the OpenVMS Debugger Version X7.3 2-11 New Features in the OpenVMS Debugger Version X7.3 2.3 EXAMINE/VARIANT Command 2. Each time the debugger encounters an anonymous variant list, it attempts to use the next variant selector to choose which variant to display. If the variant selector matches one of the variants of the variant list (union), the debugger displays that variant. 3. The debugger walks the structure top-to-bottom, depth first, so that children are encountered before siblings. 4. If the debugger encounters an anonymous variant list and does not have a variant selector to match it with, the debugger displays the first variant. 5. If the variant selector does not match any of the variants of an anonymous variant list, the debugger displays a single line to indicate that. This is similar to what the debugger does if the discriminant value fails to match any of the variants in a discriminated variant list. For example: [Variant Record omitted - null or illegal Tag Value: 3] A name specifies a name string. A name matches a variant if that variant contains a field with the name specified by name. A discriminant specifies a language expression that must be type compatible with the tag type of the variant part it is meant to match. The discriminant expression matches a variant if it evaluates to a value in the variant's case- label list. Discriminants apply only to Pascal programs, because C and C++ unions do not have discriminants. A positional-selector specifies a language expression, which should evaluate to a integer between 1 and N, where N is the number of variants in a variant list. A positional- selector that evaluates to I specifies that the Ith variant is to be displayed. You can use asterisk (*) as a wildcard, which matches all variants of an anonymous variant list. Each of these variant selectors can be used to match all variants. In particular, each of the following variant selectors indicates that all of the variants of the first anonymous variant list are to be displayed. 2-12 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.3 EXAMINE/VARIANT Command /VAR=D=* /VAR=N=* /VAR=P=* For example: EXAMINE /VARIANT=(NAME=m,DIS=4,POS=1) x means, for the first anonymous variant list encountered, display the variant part containing a field named "m", for the second anonymous variant list, display the part with the discriminant value 4, and, for the third one, display the first part. The variant selectors can themselves contain a list of selectors. For example, the following commands all mean the same thing. EXAMINE /VARIANT=(DIS=3,DIS=1,DIS=54) x EXAMINE /VARIANT=(DIS=(3,1,54)) x EXAMINE /VARIANT=DIS=(3,1,54) x You can specify a a single discriminant or position value without parentheses if the value is a simple decimal integer. To use a general expression to specify the value, you enclose the expression in parentheses. In the following list of commands, the first four are legal while the last three are not. EXAMINE /VARIANT=POS=3 EXAMINE /VARIANT=POS=(3) ! parentheses unnecessary EXAMINE /VARIANT=(POS=(3)) ! parentheses unnecessary EXAMINE /VARIANT=(POS=3) ! parentheses unnecessary EXAMINE /VARIANT=(POS=foo) ! parentheses necessary EXAMINE /VARIANT=POS=(foo) ! parentheses necessary EXAMINE /VARIANT=(POS=3-1) ! parentheses necessary 2.4 SHOW CALLS/IMAGE The SHOW CALLS command and the SHOW THREAD command each have a new /IMAGE qualifier. Note that the /IMAGE qualifier is valid on the SHOW THREAD command only in combination with the /CALLS qualifier. New Features in the OpenVMS Debugger Version X7.3 2-13 New Features in the OpenVMS Debugger Version X7.3 2.4 SHOW CALLS/IMAGE When you specify the /IMAGE qualifier, the debugger first does a SET IMAGE command for each image that has debug information (that is, it was linked using the /DEBUG or /TRACEBACK qualifier). The debugger then displays the image name for each active call on the calls stack. The output display has been expanded and displays the image name in the first column. The debugger suppresses the share$image_name module name, because that information is provided by the /IMAGE qualifier. The SET IMAGE command lasts only for the duration of the SHOW CALLS/IMAGE or SHOW THREAD/CALLS/IMAGE command. The debugger restores the set image state when the SHOW CALLS/IMAGE or SHOW THREAD/CALLS/IMAGE command in complete. The following example shows the display of the call stack of the debugger itself where both its main and GUI images have debug symbol information: DBG> SHOW CALLS/IMAGE image name module name routine name line rel PC abs PC TDEBUGSHR *STACK_INFO FIND_FRAME 3113 00000000000007FC 000000000025AB34 TDEBUGSHR *STACK_INFO DBG$GET_STACK_INFO 3557 000000000000176C 000000000025BAA4 TDEBUGSHR *DBG_SERVER DBG$SRV_GET_CALLSTACK_LIST 43549 0000000000008810 000000000005EEF0 DEBUGUISHR *DBG_CLIENT DBG$CS_GET_CALLSTACK_LIST 46122 00000000000032D8 0000000000DF2728 DEBUGUISHR *DBGDWMUI_CALLSTACK dbg$mui_update_callstack 39302 00000000000001E8 0000000000DE1738 DEBUGUISHR *DBGDWMOTIF_SOURCE_DISPLAY dbg$motif_callstk_cascading_cb 39036 00000000000009A8 0000000000DFFFC8 DECW$XTLIBSHRR5 0000000000001A60 FFFFFFFF80BADA60 DECW$XMLIBSHR12 000000000007D904 FFFFFFFF80C6F904 DECW$XMLIBSHR12 000000000007DBB8 FFFFFFFF80C6FBB8 DECW$XMLIBSHR12 0000000000078410 FFFFFFFF80C6A410 DECW$XMLIBSHR12 000000000007782C FFFFFFFF80C6982C DECW$XMLIBSHR12 000000000017B37C FFFFFFFF80D6D37C DECW$XMLIBSHR12 000000000005D690 FFFFFFFF80C4F690 DECW$XMLIBSHR12 000000000005E030 FFFFFFFF80C50030 DECW$XTLIBSHRR5 000000000003C9C0 FFFFFFFF80BE89C0 DECW$XTLIBSHRR5 000000000003D220 FFFFFFFF80BE9220 2-14 New Features in the OpenVMS Debugger Version X7.3 New Features in the OpenVMS Debugger Version X7.3 2.4 SHOW CALLS/IMAGE DECW$XTLIBSHRR5 000000000003D890 FFFFFFFF80BE9890 DECW$XTLIBSHRR5 000000000000FB58 FFFFFFFF80BBBB58 DECW$XTLIBSHRR5 00000000000102C8 FFFFFFFF80BBC2C8 DEBUGUISHR *DBGDWMOTIF dbg$motif_process_next_event 58187 0000000000004E2C 0000000000DDEBBC DEBUGUISHR *DBGDWMOTIF dbg$motif_process_events 56639 0000000000002354 0000000000DDC0E4 DEBUGUISHR *DBGDWMUI dbg$mui_process_events 49242 00000000000065F8 0000000000DD85F8 DEBUGUISHR *DBG_CLIENT DBG$CU_GetNextCommand 45347 0000000000000EC8 0000000000DF0318 DEBUGUISHR *DBG_CLIENT DBG$UI_Execute 48836 000000000000A02C 0000000000DF947C TDEBUGSHR *BLI$CALLG BLI$CALLG 13064 00000000000000BC 0000000000086A7C TDEBUGSHR *DBGDWTRANSFER DBG$UI_EXECUTE 2058 0000000000000674 00000000002D9954 TDEBUGSHR *DBG_SERVER DBG$SC_GET_COMMAND 46326 000000000000E9C0 00000000000650A0 TDEBUGSHR *DBGTHREAD_USER_INPUT reader 21338 0000000000000594 0000000000051694 PTHREAD$RTL 000000000004E02C 0000000000F5402C DBG> 2.5 Enhanced Support for C++ 2.5.1 Character String Arrays in C and C++ Prior versions of the debugger do not correctly display ASCII character strings in C and C++ modules. This has been corrected. For example, given the following definitions: char fred[] = "hello"; char *fp = fred; the debugger does this: DBG> EXAMINE fred CARRAYPTR\fred[0:5]: "hello" DBG> DEPOSIT fred="xyz" DBG> EXAMINE fred CARRAYPTR\fred[0:5]: "xyz" DBG> New Features in the OpenVMS Debugger Version X7.3 2-15 New Features in the OpenVMS Debugger Version X7.3 2.5 Enhanced Support for C++ The debugger can also do string comparison in C and C==. For example, assume that a program has the following function definition: int count ( char * name ) When the debugger has control of that program, the following commands are equivalent and define a break point on the function count that triggers only when the function is called with named string "xyz." DBG> SET BREAK COUNT WHEN ("xyz"==*name) DBG> SET BREAK COUNT WHEN ((*name)=="xyz") Note that the following command should work, but does not, because of a pre-existing bug. DBG> SET BREAK COUNT WHEN (*name=="xyz") 2-16 New Features in the OpenVMS Debugger Version X7.3 3 _________________________________________________________________ Major Bugs Fixed in the OpenVMS Debugger Version X7.3 This section describes the major bug fixes that are incorporated in the OpenVMS Debugger Version 7.3, including those fixed in the intermediate V7.2x network kits. 3.1 SET MODULE Command The SET MODULE command can now handle scopes nested to 200 levels. The previous limit was 100 levels. 3.2 SET EVENT ADA Command In prior versions of the debugger, the SET EVENT ADA command sometimes did not work, and the event facility remained THREADS. This problem has been corrected. 3.3 Register View Prior versions of the debugger had the following problems associated with the register view: o Debugger errors occurred when selecting registers after the register display list had changed. o Use of the Deposit Box shortcut menu caused unaligned register displays. o Vertical scrolling sometimes corrupted the right hand side register values. o It was difficult to change the floating point radix of register displays. Some of these were problems internal to the debugger, and some originate in DECwindows Motif. The display problems have been fixed as much as is practical. Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3-1 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.3 Register View In addition, the Change Radix and Change All Radix submenus (on the Register menu of the register view) have additional options. On VAX, you can now select f_float for register display. On Alpha, you can now select g_float and t_float for register display. 3.4 Enumerated Lists In prior versions of the debugger, matching an enumerated list via a using declaration resulted in an error. For example, the following declaration: namespace ns { enum EE { Me, Myself, I }; } main() { using ns::EE; EE e = Me; } caused the following logic error: DBG> EXAMINE EE %DEBUG-E-INTERR, debugger error in DBGPARSER\PATHNAME_TO_PRIMARY 10... This problem has been corrected. 3.5 Enumeration Literals As Class Members Prior versions of the debugger did not treat C++ enumeration literals as class members. This problem has been corrected. For example, given the following declaration: struct B { enum colors { yellow, red, green, purple }; } b, *p; the debugger will match 'B::red' and 'b.red', and 'p- >red'. 3.6 Global Symbol Table Search When debugging C and C++ programs, previous versions of the debugger had a problem when searching the global symbol table, which was caused by incorrect internal assumptions about case. For example: DBG> EXAMINE FOO %DEBUG-E-NOSYMBOL, symbol 'foo' is not in the symbol table DBG> EXAMINE FOO X_CXXC_BUGS3560A\foo: 0 This problem has been corrected. 3-2 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.7 Global Section Watchpoints (Alpha Only) 3.7 Global Section Watchpoints (Alpha Only) Previous versions of the debugger sometimes had difficulty setting watchpoints on global section variables. This problem has been corrected. 3.8 Source View Previous versions of the debugger had problems within the source view of the DECwindows Motif interface, including the following: o Breakpoints set on routines through the source browser sometimes failed to toggle on and off. o The source view was unstable whenever the code was scrolled when used with Motif Version 1.2-5. o Debugger errors occurred when scrolling source code after the RUN command and before the first GO command. These problems have been corrected. 3.9 Array Elements Displayed Differently on VAX and Alpha Previous versions of the Alpha debugger displayed FORTRAN arrays in row-major order. This has been fixed so that the Alpha debugger now displays FORTRAN arrays in column-major order. 3.10 Wrong Address While debugging a C++ program, previous versions of the debugger sometimes have trouble accessing an object: DBG> EXAMINE C %DEBUG-E-NOACCESSR, no read access to address 000000017AEF3A34 The debugger would sometimes look for a 64-bit address when it should have been looking for a 32-bit address. This problem has been corrected. 3.11 Cross Image Symbol Fixup When using the Version 7.2 Alpha debugger, attempts to examine or evaluate universal data variables sometimes resolved to the wrong address because of a cross image symbol fixup problem. This problem has been corrected. Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3-3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.12 Interrupting Program Execution in DECwindows Motif Interface 3.12 Interrupting Program Execution in DECwindows Motif Interface In Version 7.2 of the debugger, the STOP button in the DECwindows Motif interface and Ctrl-C in screen mode sometimes do not return control to the user. This problem has been corrected. 3.13 Nested Anonymous Unions In previous versions of the debugger, nested anonymous unions in C++ led to incorrect symbolizations. For example, the following definition: struct U { int x; union { int l; union { int s; int t; }; }; } u; symbolized u.s as 'u. ::s'. This problem has been corrected. 3.14 Anonymous Structs in C C variant struct is a VAX C extension in DEC C that allows the creation of anonymous structs. For example, the following definition: union { variant_struct { int a; int b; } vs; } u; allows references such as 'u.a'. Previous versions of the debugger did not allow this. This problem has been corrected. 3.15 Symbolization of C++ References Previous versions of the debugger symbolized C++ references with an extra period at the end. For example: Source: int &k = i; Symbolization: REFERENCE\k.: 0 This problem has been corrected. 3-4 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.16 Enumerators as Class Symbols 3.16 Enumerators as Class Symbols In previous versions of the debugger, the following C++ definition: struct C_Outer { struct C_Middle2 { enum Middle2_E3 {}; } middle2; } c_outer; led to: DBG> show SYMBOL/FULL C_Outer type C_Outer struct (C_Outer, 1 component), size: 1 byte contains the following members: %DEBUG-E-INTERR, debugger error in DBGDUMP\DBG$GET_SYMBOL_OFFSET or session corruption This problem has been corrected. 3.17 Inline Code Previous versions of the debugger could get confused when trying to set a breakpoint within a routine that is inlined within a program that is compiled with the /OPTIMIZED switch. Users would receive an error message similar to the following: DBG> SET BREAK %LINE 37 %DEBUG-E-INTERR, debugger error in DBGEVENT_SEMANTICS\GET_LINE_BREAK_ADDRESSES 40 or session corruption %DEBUG-E-CMDFAILED, the SET BREAK command has failed This problem has been fixed. 3.18 Symbols in Nested Ada Packages/ada_symbols Prior versions of the debugger fail to find symbols declared within nested Ada packages when the 'real' package names are used. For example: DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT: 0 DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA.POOL.STUB_COUNTER_PUT %DEBUG-E-NOSYMBOL, symbol 'AETS_SPECIAL_EVENTS_DETECTION_DATA\POOL.STUB_COUNTER_PUT' is not in the symbol table Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3-5 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.18 Symbols in Nested Ada Packages/ada_symbols This has been corrected. For example: DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT: 0 DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA.POOL.STUB_COUNTER_PUT AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT: 0 3.19 Symbol Table Errors Prior versions of the debugger had trouble reading sertain debugger symbol table (DST) files. For example: %DEBUG-E-INTERR, debugger error in DBG$RST_FROM_DST: could not find corresponding RST or session corruption This has been corrected. 3.20 Debugger Runs out of Memory at Startup Prior versions of the debugger ran out of memory when loading certain large programs. This has been corrected. 3.21 Non-Unique COBOL Symbol Lookups (VAX Only) In prior versions of the debugger, lookups of certain COBOL record components resulted in non-unique symbol errors. For example: DBG> SET MODULE B_COB DBG> EXAMINE D00_DIALLING_NO %DEBUG-I-NOUNIQ, symbol 'D00_DIALLING_NO' is not unique record component A_COB\COMMON_DATA_FORMAT_WKSP.D00_CDF.CDF_WKSP.D00_DIALLING_NO record component B_COB\COMMON_DATA_FORMAT_WKSP.D00_CDF.CDF_WKSP.D00_DIALLING_NO %DEBUG-E-REENTER, reenter the command using a more precise pathname This has been corrected. 3.22 DECwindows Source View Update In prior versions, the DECwindows Motif interface to the debugger did not correctly update the source view on a return step command from a subroutine call when the calling routine was in a different source module. This has been corrected. 3-6 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.23 SHOW SYMBOL IN Clause 3.23 SHOW SYMBOL IN Clause The ability of the debugger to set modules dynamically has been improved. 3.24 Corrupted Stack Errors (Alpha Only) On Alpha, some recent compilers introduced certain stack errors. If prior versions of the debugger encounters these errors while program execution is suspended at a breakpoint, a STEP or other resume command can result in the following error: %DEBUG-W-NORESUME, unable to resume execution, stack or PC corrupted. This problem has been corrected. It is also recommended that you upgrade the compiler that causes the corrupt stack. 3.25 Just-in-Time Debugging When attempting just-in-time debugging (for example, when DBG$TRACE is defined as SYS$SHARE:DEBUG.EXE) prior versions of the debugger will sometimes crash. This has been corrected. 3.26 Heap Analyzer Hangs Corrected Prior versions of the debugger sometimes experience hangs in the heap analyzer. Many of these hangs have been corrected. 3.27 Array Elements in Pascal In prior versions of the debugger, EXAMINE and EVALUATE commands aimed at Pascal array elements sometimes return incorrect results. This has been corrected. 3.28 Debugger Installation UNSET/SYSTEM Problem Command file SYS$STARTUP:DEBUGSETUP.COM in the installation kit had problems with the UNSET/SYSTEM command. This has been corrected. Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3-7 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.29 Debugging Protected Images 3.29 Debugging Protected Images Previous versions of the debugger included in the network kit would not start up correctly on protected images. This has been corrected. 3.30 Register View Fix Prior versions of the debugger DECwindows Motif interface do not correctly restore the Register View during a customized debugger startup. This has been corrected. 3.31 SET BREAK %LINE Command (Alpha only) In prior versions of the debugger, the command SET BREAKPOINT %LINE n sometimes fails to trigger the specified breakpoint. This has been corrected. 3.32 EVALUATE/ADDRESS Command In prior versions of the debugger, the command EVALUATE/ADDRESS sometimes incorrectly evaluates the address of a record structure component. This has been corrected. 3.33 Thread Entry Fix (Alpha only) When using prior versions of the debugger to analyze multithread programs on SMP machines, a Ctrl-C command sometimes hangs or crashes the process. This has been corrected. 3.34 Multithread Program Hangs When using prior versions of the debugger to analyze multithread programs on SMP systems with multiple kthreads enabled, the process sometimes hangs. This has been corrected. 3.35 ACCVIO Debugging Ada Programs In prior versions of the debugger, the EXAMINE command sometimes causes an ACCVIO error when looking at an Ada variable. This has been corrected. 3-8 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.36 DECwindows Motif GUI Bug 3.36 DECwindows Motif GUI Bug In prior versions of the debugger, the DECwindows Motif interface sometimes produces "%DEBUG-F-STKOVF, stack overflow" errors. This has been corrected. 3.37 Watchpoint Bug In prior versions of the debugger, nonstatic watchpoints set in AST routines do not work. This has been corrected. 3.38 SET TRACE/LINE/INTO Command Fix In prior versions of the debugger, the command SET TRACE/LINE/INTO traces correctly only into the first call, and skips further calls. This has been corrected. 3.39 /CALL Fix (Alpha only) In prior versions of the debugger, the commands SET BREAK/CALL, SET TRACE/CALL, and STEP/CALL do not interrupt on the return instruction. This has been corrected. 3.40 CONNECT Command Kills Process In prior versions of the debugger, using the CONNECT command from a privileged process to connect the debugger to an unprivileged process kills the unprivileged process. This has been corrected. 3.41 Inlined Routines Fix When analyzing programs with inlined routines, prior versions of the debugger sometimes fail to stop in the main routine on startup. This has been corrected. 3.42 Source View Fix In prior versions of the debugger, clicking the right button to invoke a popup menu sometimes causes an ACCVIO. This has been corrected. Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3-9 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.43 Debug Symbol Table Search 3.43 Debug Symbol Table Search Prior versions of the debugger do not correctly search for debug symbol tables (DSTs). This has been corrected. The Version X7.3-017 (and later) debugger searches for DSTs in the following order: o In the executable image o In a .DSF file in the current directory o In a .DSF file the directory of the executable file o In a .DSF file in the directory pointed to by the DBG$IMAGE_DSF_PATH logical name Note that the .DSF file must have a file name that is the same as the name of the executable image. 3.44 Activate and Deactivate Commands in Breakpoint View In the breakpoint view in prior versions of the debugger, the ACTIVATE and DEACTIVATE buttons sometimes fail when the breakpoint has been specified with a line number and offset (%LINE n + offset). This has been corrected. 3.45 EXAMINE Command in BLISS Program When analyzing a BLISS program with prior versions of the debugger, an indirect EXAMINE command (for example, EXAMINE@FOO) fails when the target is an address in system space. This has been corrected. 3.46 SHOW SOURCE Command in Source View When using the DECwindows Motif interface in prior versions of the debugger to analyze multiple images, the source view sometimes displays the source code from the wrong image. This problem has been corrected. 3.47 Unconstrained Arrays in Ada Programs When analyzing an Ada program in prior versions of the debugger, the EXAMINE command can not display an unconstrained array. This problem has been corrected. 3-10 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3.48 Evaluating Sets in Pascal 3.48 Evaluating Sets in Pascal Prior versions of the debugger run out of memory when examining certain sets in Pascal programs. This has been corrected. 3.49 Examine Command in Ada Programs When analyzing an Ada program with prior versions of the debugger, an EXAMINE command sometimes fails with a "proper frame not found on call stack" error message. This has been corrected. 3.50 Command View Update When using the DECwindows Motif interface in debugger versions later than 6.2, the command window is sometimes slow to update. This has been corrected. 3.51 SHOW SYMBOL/FULL in C++ Programs When analyzing a C++ program with prior versions of the debugger, a SHOW/SYMBOL/FULL command can produce incorrect padding information. This has been corrected. Major Bugs Fixed in the OpenVMS Debugger Version X7.3 3-11 4 _________________________________________________________________ Major Bugs Fixed in the OpenVMS Debugger Version X7.4 This section describes the major bug fixes that are incorporated in the OpenVMS Debugger Version X7.4-020 debugger. 4.1 OpenVMS Version 7.3-2 Installation Requirement for Debugger On OpenVMS Version 7.3-2 systems, installations of the debugger require OpenVMS Debugger Version X7.4-020 or later. Earlier versions of the debugger that were installed on OpenVMS V7.3-2 systems will fail with "bad stack" warnings. This change was made to the debugger kit to address the way the Condition Handling Facility is implemented on OpenVMS V7.3-2 systems. 4.2 User Mode ASTs Became Disabled After a CALL Command User mode ASTs became disabled after a CALL command. In the OpenVMS V7.3 timeframe, a process_entry data structure was inappropriately changed from a longword- to a byte-oriented format. This caused a saved process flag restore corruption in DBGCALL\DBG$PROCESS_CALL_DONE and other potential errors in DBGMAIN, DBGEVENT, and DBGPROCESS. The process entry structure has been changed back to longword format, fixing the problem. 4.3 GUI Data Corruptions Result from Debugger Main Image Threading GUI data corruptions as a result of the debugger main image (debugshr) threading in X7.3 have been fixed. For example, expanding the source browser for images with 5000 or more modules failed and corrupted the soucre browser view. Some register view manipulations failed and corrupted the view. These problems have been fixed. Major Bugs Fixed in the OpenVMS Debugger Version X7.4 4-1 Major Bugs Fixed in the OpenVMS Debugger Version X7.4 4.4 Erroneous PC and PS Values at Exception Break 4.4 Erroneous PC and PS Values at Exception Break Erroneous PC and PS values had occurred at an exception or at an unhandles exception break. This condition has been fixed. Note that the results from a SHOW CALL, EXAMINE PC, and EXAMINE PSR command, however, were correct. 4.5 Incorrect Addresses in Symbol Definitions Since OpenVMS V7.3-1, the image activator allows the logical name of a shareable image to contain a full file specification, including disk, directory, and occasionally, file extentions. Because the debugger expects only simple filenames, incorrect addresses occurred when examining some symbol definitions. This condition has been fixed. 4.6 Errors Reported for Rerun Commands in GUI Mode When using the RERUN command in GUI-redirected display (i.e, set display/create/node), the Debugger reports that the command failed, eventhough it succeeded. For example: DBG> go %DEBUG-I-SOURCESCOPE, Source lines not available for 0\%PC Displaying source for 6\%PC %DEBUG-I-EXITSTATUS, is '%NONAME-?-NOMSG, Message number EFFFFFFF' DBG> rerun %DEBUG-E-COULDNOTRUN, the RUN or RERUN command did not succeed -CLI-F-NOMSG, Message number 00038004 %DEBUG-I-INITIAL, Language: C, Module: TEST %DEBUG-I-NOTATMAIN, Type GO to reach MAIN program %DEBUG-I-NOSOURCE, No source for address: 0000000000020000 DBG> This problem has been fixed; the debugger no longer reports erroneous messages. 4.7 Alpha Fortran 64-Bit Pointer Problem Fixed On OpenVMS Alpha systems, the debugger previously dropped the high longword of a 64-bit Fortran pointer during the dereference. This problem has been fixed. 4-2 Major Bugs Fixed in the OpenVMS Debugger Version X7.4 Major Bugs Fixed in the OpenVMS Debugger Version X7.4 4.8 SHOW SCOPE Command Produced Incomplete Information 4.8 SHOW SCOPE Command Produced Incomplete Information Occasionally, the SHOW SCOPE command only showed one level of search information when many more levels were present. Using a simple STEP/INSTRUCTION could work around this problem. However, the Debugger now accesses a default scope list that provides the entire information. 4.9 Process Memory Loss when Setting Breakpoints Fixed When setting a breakpoint on a routine name, the Debugger sometimes appeared to hang, ending in a %DEBUG-E-NOFREE and %LIB-F-INSVIRMEM error. This problem was limited to the GUI debugger and has been fixed. 4.10 Source Code Debugger Hangs at Start Up On OpenVMS Alpha Version 7.3-2, the Source Code Debugger (SCD) would occasionally hang at start up. This condition has been fixed. This condition resulted from the kernel trying to find an image named SYS$BASE_IMAGE.EXE that did not exit. The kernel now correctly looks for either SYS$BASE_IMAGE or SYS$BASE_IMAGE.EXE, and the SCD starts up. Major Bugs Fixed in the OpenVMS Debugger Version X7.4 4-3 _________________________________________________________________ Index F______________________________ P______________________________ Facility Process dumps note category disk quota, 2-5 topic, 3-1, 3-2, 3-3, privileged users, 2-6 3-4, 3-5 security, 2-5, 2-7 T______________________________ Topic, 3-1, 3-2, 3-3, 3-4, 3-5 Index-1