Previous | Contents | Index |
11.12 Sample System Code Debugging Session
This section provides a sample session that shows the use of some
OpenVMS debugger commands as they apply to SCD. The examples in this
session show how to work with C code that has been linked into the
SYSTEM_DEBUG execlet. It is called as an initialization routine for
SYSTEM_DEBUG.
To reproduce this sample session, the host system needs access to the SYSTEM_DEBUG.DSF matching the SYSTEM_DEBUG.EXE file on your target system, and to the source file C_TEST_ROUTINES.C, which is available in SYS$EXAMPLES. The target system is booted with the boot flags 0, 8004, so it stops at an initial breakpoint. The system disk is DKB200, and the network device is ESA0 in the Alpha examples and EIA0 in the Integrity server examples.
Note that the example displays from Example 11-5 onwards are all taken from an OpenVMS Integrity server system. On an OpenVMS Alpha system, some of the output is different, but the commands entered are the same on both platforms, except in one case, as noted in the accompanying text.
Example 11-1 Booting an Alpha Target System |
---|
>>> b -fl 0,8004 dkb200,esa0 INIT-S-CPU... INIT-S-RESET_TC... INIT-S-ASIC... INIT-S-MEM... INIT-S-NVR... INIT-S-SCC... INIT-S-NI... INIT-S-SCSI... INIT-S-ISDN... INIT-S-TC0... AUDIT_BOOT_STARTS ... AUDIT_CHECKSUM_GOOD AUDIT_LOAD_BEGINS AUDIT_LOAD_DONE %SYSBOOT-I-GCTFIL, Using a configuration file to boot as a Galaxy instance. OpenVMS (TM) Alpha Operating System, Version V8.3 © Copyright 1976-2006 Hewlett-Packard Development Company, L.P. DBGTK: Initialization succeeded. Remote system debugging is now possible. DBGTK: Waiting at breakpoint for connection from remote host. |
A sample Integrity server Boot Menu follows (long lines wrapped for clarity).
Example 11-2 Booting an Integrity server Target System |
---|
Please select a boot option EFI Shell [Built-in] PESOS - X8.2-AHI (Topaz BL2) on $1$DGA3890:[SYS2.] PESOS - X8.2-AHI (Topaz BL2) on $1$DGA3890:[SYS2.] sysboot PESOS - E8.2-ADH (Topaz BL1) on $1$DGA3891:[SYS2.] PESOS - E8.2-ADH (Topaz BL1) on $1$DGA3891:[SYS2.] sysboot Boot Option Maintenance Menu System Configuration Menu Select the "EFI Shell [Built-in]" Loading.: EFI Shell [Built-in] EFI Shell version 1.10 [14.61] Device mapping table fs0 : Acpi(HWP0002,100)/Pci(1|1)/Scsi(Pun0,Lun0)/HD(Part2, SigB3A4A931-1F2A-11D8-9EA1-AA000400FEFF) fs1 : Acpi(HWP0002,100)/Pci(1|1)/Scsi(Pun2,Lun0)/HD(Part1, SigF7B864C3) fs2 : Acpi(HWP0002,300)/Pci(1|0)/Fibre(WWN50001FE10011B15D, Lun2200)/HD(Part1,Sig51C7BEE1-070B-11D9-8099-AA000400FEFF) fs3 : Acpi(HWP0002,300)/Pci(1|0)/Fibre(WWN50001FE10011B15D, Lun2200)/HD(Part4,Sig51C7BEE0-070B-11D9-809A-AA000400FEFF) . . . Shell> Select the desired device/partion: Shell> fs1: fs1:\> |
Use the utilities in \efi\vms. Use vms_show to list the devices and vms_set to set ethernet device (debug_dev), if necessary. Note that this set is sticky so it only needs to be done once. Then load the operating system with the desired flags. Note that Alpha and Integrity servers use the same flags with the same meanings.
fs1:\> dir \efi\vms Directory of: fs1:\efi\vms 09/13/04 10:13a <DIR> 2,048 . 09/13/04 10:13a <DIR> 2,048 .. 09/13/04 10:13a <DIR> 2,048 tools 09/13/04 10:13a 3,101,184 ipb.exe 09/13/04 10:13a <DIR> 2,048 update 09/13/04 10:13a 846,336 vms_loader.efi 09/13/04 10:13a 244,224 vms_bcfg.efi 09/13/04 10:13a 218,112 vms_set.efi 09/13/04 10:13a 215,040 vms_show.efi 5 File(s) 4,624,896 bytes 4 Dir(s) fs1:\> \efi\vms\vms_show device VMS: EIA0 EFI: Acpi(000222F0,0)/Pci(3|0)/Mac(00306E39F77B) VMS: DKB200 EFI: fs1: Acpi(000222F0,100)/Pci(1|1)/Scsi(Pun2,Lun0) VMS: DKB0 EFI: fs0: Acpi(000222F0,100)/Pci(1|1)/Scsi(Pun0,Lun0) VMS: EWA0 EFI: Acpi(000222F0,100)/Pci(2|0)/Mac(00306E3977C5) . . . |
Set the debug_dev to one of the connected ethernet devices:
fs1:\> \efi\vms\vms_set debug_dev eia0 VMS: EIA0 0-30-6E-39-F7-CF EFI: Acpi(000222F0,0)/Pci(3|0)/Mac(00306E39F7CF) fs1:\> \efi\vms\vms_show debug_dev VMS: EIA0 0-30-6E-39-F7-CF EFI: Acpi(000222F0,0)/Pci(3|0)/Mac(00306E39F7CF) |
Boot up the OS. In this example, the boot is with the SCD and initial (early) breakpoint flags, using root 2 (SYS2), that will vary with system setups:
fs1:\> \efi\vms\vms_loader -flags "2,8004" HP OpenVMS Industry Standard 64 Operating System, V8.3 © Copyright 1976-2006 Hewlett-Packard Development Company, L.P. %EIA-I-BOOTDRIVER, Starting auto-negotiation %EIA-I-BOOTDRIVER, Auto-negotiation selected 100BaseTX FDX DBGTK: Initialization succeeded. Remote system debugging is now possible. DBGTK: Waiting at breakpoint for connection from remote host. |
The example continues by invoking the system code debugger's character-cell interface on the host system.
Example 11-3 Invoking the Alpha System Code Debugger |
---|
$ define dbg$decw$display " " $ debug/keep OpenVMS Alpha Debug64 Version V8.3-003 DBG> |
Example 11-4 Invoking the Integrity server System Code Debugger |
---|
$ define dbg$decw$display " " $ debug/keep OpenVMS I64 Debug64 Version V8.3-003 DBG> |
Use the CONNECT command to connect to the target system. In this example, the target system's default password is the null string, and the logical name DBGHK$IMAGE_PATH is used for the image path; so the command qualifiers /PASSWORD and /IMAGE_PATH are not being used. You may need to use them.
When you have connected to the target system, the DBG> prompt is displayed. Enter the SHOW IMAGE command to see what has been loaded. Because you are reaching a breakpoint early in the boot process, there are very few images. See Example 11-5. Notice that SYS$BASE_IMAGE has an asterisk next to it. This is the currently set image, and all symbols currently loaded in the debugger come from that image.
Example 11-5 Connecting to the Target System |
---|
DBG> connect %node_name TSTSYS %DEBUG-I-INIBRK, target system interrupted DBG> show image image name set base address end address ERRORLOG no 0000000000000000 FFFFFFFFFFFFFFFF EXEC_INIT no 0000000000000000 FFFFFFFFFFFFFFFF SYS$ACPI no 0000000000000000 FFFFFFFFFFFFFFFF *SYS$BASE_IMAGE yes 0000000000000000 FFFFFFFFFFFFFFFF SYS$DKBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$DKBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$DKBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$EGBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$OPDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$PKMBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$PKMBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$PKMBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYS$PLATFORM_SUPPORT no 0000000000000000 FFFFFFFFFFFFFFFF SYS$PUBLIC_VECTORS no 0000000000000000 FFFFFFFFFFFFFFFF SYS$SRBTDRIVER no 0000000000000000 FFFFFFFFFFFFFFFF SYSTEM_DEBUG no 0000000000000000 FFFFFFFFFFFFFFFF SYSTEM_PRIMITIVES no 0000000000000000 FFFFFFFFFFFFFFFF SYSTEM_SYNCHRONIZATION no 0000000000000000 FFFFFFFFFFFFFFFF total images: 18 DBG> |
Example 11-6 shows the target system's console display during the connect sequence. Note that for security reasons, the name of the host system, the user's name, and process ID are displayed.
Example 11-6 Target System Connection Display |
---|
DBGTK: Connection attempt from host HSTSYS user GUEST process 2E801C2F DBGTK: Connection attempt succeeded |
To set a breakpoint at the first routine in the C_TEST_ROUTINES module of the SYSTEM_DEBUG.EXE execlet, do the following:
Example 11-7 Setting a Breakpoint |
---|
DBG> set image system_debug %DEBUG-I-DYNLNGSET, setting language IMACRO DBG> show module module name symbols language size AUX_TARGET no C 0 BUFSRV_TARGET no C 0 BUGCHECK_CODES no BLISS 0 C_TEST_ROUTINES no C 0 LIB$$UNWIND_WEAK no BLISS 0 LIB$EF no IMACRO 0 LIB$MALLOC no C 0 LIB$MALLOC_64 no C 0 LINMGR_TARGET no C 0 OBJMGR no C 0 PLUMGR no C 0 POOL no C 0 PROTOMGR_TARGET no C 0 SOCMGR no C 0 SYS$DOINIT yes IMACRO 122526 TMRMGR_TARGET no C 0 total modules: 16 DBG> set module c_test_routines DBG> show module c_test_routines module name symbols size C_TEST_ROUTINES yes 5672 total C modules: 1 DBG> set language c DBG> show symbol test_c_code* routine C_TEST_ROUTINES\test_c_code routine C_TEST_ROUTINES\test_c_code2 routine C_TEST_ROUTINES\test_c_code3 routine C_TEST_ROUTINES\test_c_code4 routine C_TEST_ROUTINES\test_c_code5 DBG> set break test_c_code |
Now that the breakpoint is set, you can proceed and activate the breakpoint. When that occurs, the debugger tries to open the source code for that location in the same place as where the module was compiled. Because that is not the same place as on your system, you need to tell the debugger where to find the source code. This is done with the debugger's SET SOURCE command, which takes a search list as a parameter so you can make it point to many places.
Example 11-8 Finding the Source Code |
---|
DBG> set source/latest sys$examples,sys$library DBG> go break at routine C_TEST_ROUTINES\test_c_code 113: x = c_test_array[0]; |
Now that the debugger has access to the source, you can put the debugger into screen mode to see exactly where you are and the code surrounding it.
Example 11-9 Using the Set Mode Screen Command |
---|
DBG> Set Mode Screen; Set Step Nosource - SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); 105: c_test_array[3] = test; 106: return c_test_array[23]; 107: } 108: void test_c_code(void) 109: { 110: int x,y; 111: __int64 x64,y64; 112: -> 113: x = c_test_array[0]; 114: y = c_test_array[1]; 115: x64 = c_test_array[2]; 116: y64 = c_test_array[3]; 117: c_test_array[14] = test_c_code2(x64+y64,x+y,x64+x,&y64); 118: test_c_code4(); 119: return; 120: } - OUT -output------------------------------------------------------------------- - PROMPT -error-program-prompt-------------------------------------------------- DBG> |
Now, you want to set another breakpoint inside the test_c_code3 routine. You use the debugger's SCROLL/UP command (8 on the keypad) to move to that routine and see that line 93 would be a good place to set the breakpoint. It is at a recursive call. Then you proceed to that breakpoint with the GO command.
Example 11-10 Using the SCROLL/UP DEBUG Command |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 80: void test_c_code4(void) 81: { 82: int i,k; 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) 93: subrtnCount = test_c_code3(subrtnCount); 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else - OUT -output------------------------------------------------------------------- - PROMPT -error-program-prompt-------------------------------------------------- DBG> Scroll/Up DBG> set break %line 93 DBG> go DBG> |
When you reach that breakpoint, the source code display is updated to show where you currently are, which is indicated by an arrow. A message also appears in the OUT display indicating you reach the breakpoint at that line.
Example 11-11 Breakpoint Display |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 82: int i,k; 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) -> 93: subrtnCount = test_c_code3(subrtnCount); 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); - OUT -output------------------------------------------------------------------- break at C_TEST_ROUTINES\test_c_code3\%LINE 93 - PROMPT -error-program-prompt-------------------------------------------------- DBG> Scroll/Up DBG> set break %line 93 DBG> go DBG> |
Now you try the debugger's STEP command. The default behavior for STEP is STEP/OVER, unlike XDELTA and DELTA, which is STEP/INTO, so, normally you would expect to step to line 94 in the code. However, because you have a breakpoint inside test_c_code3 that is called at line 93, you will reach that event first.
Example 11-12 Using the Debug Step Command |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 82: int i,k; 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) -> 93: subrtnCount = test_c_code3(subrtnCount); 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); - OUT -output------------------------------------------------------------------- break at C_TEST_ROUTINES\test_c_code3\%LINE 93 break at C_TEST_ROUTINES\test_c_code3\%LINE 93 - PROMPT -error-program-prompt-------------------------------------------------- DBG> DBG> set break %line 93 DBG> go DBG> Step DBG> |
Now, you try a couple of other commands, EXAMINE and SHOW CALLS. The EXAMINE command allows you to look at all the C variables. Note that the C_TEST_ROUTINES module is compiled with the /NOOPTIMIZE switch which allows access to all variables. The SHOW CALLS command shows you the call sequence from the beginning of the stack. In this case, you started out in the image EXEC_INIT. (The debugger prefixes all images other than the main image with SHARE$ so it shows up as SHARE$EXEC_INIT. The suffix _CODE0 is appended if the executive image is sliced.)
Example 11-13 Using the Examine and Show Calls Commands |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 82: int i,k; 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) -> 93: subrtnCount = test_c_code3(subrtnCount); 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); - OUT -output------------------------------------------------------------------- C_TEST_ROUTINES\test_c_code3\subrtnCount: 8 module name routine name line rel PC abs PC *C_TEST_ROUTINES test_c_code3 93 0000000000000DC0 FFFFFFFF800BAFC0 *C_TEST_ROUTINES test_c_code3 93 0000000000000DE0 FFFFFFFF800BAFE0 *C_TEST_ROUTINES test_c_code2 104 0000000000000F40 FFFFFFFF800BB140 *C_TEST_ROUTINES test_c_code 117 00000000000010B0 FFFFFFFF800BB2B0 XDT$INIT 00000000000015C0 FFFFFFFF880955C0 *SYS$DOINIT EXE$INITIALIZE 1973 0000000000000360 FFFFFFFF88094360 SHARE$EXEC_INIT_CODE0 000000000005C240 FFFFFFFF803BB640 SHARE$EXEC_INIT_CODE0 0000000000057F20 FFFFFFFF803B7320 SHARE$EXEC_INIT_CODE0 0000000000047850 FFFFFFFF803A6C50 SHARE$EXEC_INIT_CODE0 0000000000042E90 FFFFFFFF803A2290 - PROMPT -error-program-prompt-------------------------------------------------- DBG> set break %line 93 DBG> go DBG> Step DBG> examine subrtnCount DBG> show calls DBG> |
If you want to proceed because you are done debugging this code, first cancel all the breakpoints and then enter the GO command. Notice, however, that you do not keep running but receive a message that you have stepped to line 94. This happens because the STEP command used earlier never completed. It was interrupted by the breakpoint on line 93.
Note that the debugger remembers all step events and only removes them once they have completed.
Example 11-14 Canceling the Breakpoints |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) 93: subrtnCount = test_c_code3(subrtnCount); -> 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); 105: c_test_array[3] = test; - OUT -output------------------------------------------------------------------- module name routine name line rel PC abs PC *C_TEST_ROUTINES test_c_code3 93 0000000000000DC0 FFFFFFFF800BAFC0 *C_TEST_ROUTINES test_c_code3 93 0000000000000DE0 FFFFFFFF800BAFE0 *C_TEST_ROUTINES test_c_code2 104 0000000000000F40 FFFFFFFF800BB140 *C_TEST_ROUTINES test_c_code 117 00000000000010B0 FFFFFFFF800BB2B0 XDT$INIT 00000000000015C0 FFFFFFFF880955C0 *SYS$DOINIT EXE$INITIALIZE 1973 0000000000000360 FFFFFFFF88094360 SHARE$EXEC_INIT_CODE0 000000000005C240 FFFFFFFF803BB640 SHARE$EXEC_INIT_CODE0 0000000000057F20 FFFFFFFF803B7320 SHARE$EXEC_INIT_CODE0 0000000000047850 FFFFFFFF803A6C50 SHARE$EXEC_INIT_CODE0 0000000000042E90 FFFFFFFF803A2290 stepped to C_TEST_ROUTINES\test_c_code3\%LINE 94 - PROMPT -error-program-prompt-------------------------------------------------- DBG> Step DBG> examine subrtnCount DBG> show calls DBG> cancel break/all DBG> go DBG> |
The STEP/RETURN command, a different type of step command, single steps assembly code until it finds a return instruction. This command is useful if you want to see the return value for the routine, which is done here by examining the R0 register on Alpha, or the R8 register on Integrity servers.
For more information about using other STEP command qualifiers, see the HP OpenVMS Debugger Manual.
Example 11-15 Using the Step/Return Command |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) 93: subrtnCount = test_c_code3(subrtnCount); -> 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); 105: c_test_array[3] = test; - OUT -output------------------------------------------------------------------- *C_TEST_ROUTINES test_c_code3 93 0000000000000DE0 FFFFFFFF800BAFE0 *C_TEST_ROUTINES test_c_code2 104 0000000000000F40 FFFFFFFF800BB140 *C_TEST_ROUTINES test_c_code 117 00000000000010B0 FFFFFFFF800BB2B0 XDT$INIT 00000000000015C0 FFFFFFFF880955C0 *SYS$DOINIT EXE$INITIALIZE 1973 0000000000000360 FFFFFFFF88094360 SHARE$EXEC_INIT_CODE0 000000000005C240 FFFFFFFF803BB640 SHARE$EXEC_INIT_CODE0 0000000000057F20 FFFFFFFF803B7320 SHARE$EXEC_INIT_CODE0 0000000000047850 FFFFFFFF803A6C50 SHARE$EXEC_INIT_CODE0 0000000000042E90 FFFFFFFF803A2290 stepped to C_TEST_ROUTINES\test_c_code3\%LINE 94 stepped on return from C_TEST_ROUTINES\test_c_code3\%LINE 94 to C_TEST_ROUTINES\test_c_code3\%LINE 94+17 C_TEST_ROUTINES\test_c_code3\%R8: 0 - PROMPT -error-program-prompt-------------------------------------------------- DBG> show calls DBG> cancel break/all DBG> go DBG> step/return DBG> examine r8 DBG> |
After you finish the SCD session, enter the GO command to leave this module. You will encounter another INI$BRK breakpoint at the end of EXEC_INIT. An error message is displayed indicating there are no source lines, because debug information on INI$BRK is not available.
Also notice that there is no message in the OUT display for this event. That is because INI$BRKs are special breakpoints that are handled as SS$_DEBUG signals. They are a method for the system code to break into the debugger and there is no real breakpoint in the code.
Enter the SHOW IMAGE command. You will see more images displayed as the boot path has progressed further.
Finally, enter GO, allowing the target system to boot completely, because there are no more breakpoints in the boot path. The debugger will wait for another event to occur.
Example 11-16 Using the Show Image Command |
---|
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 83: for(k=0;k<1000;k++) 84: { 85: test_c_code5(&i); 86: } 87: return; 88: } 89: int test_c_code3(int subrtnCount) 90: { 91: subrtnCount = subrtnCount - 1; 92: if (subrtnCount != 0) 93: subrtnCount = test_c_code3(subrtnCount); -> 94: return subrtnCount; 95: } 96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar) 97: { 98: c_test_array[5] = in64; 99: c_test_array[6] = in32; 100: if (c_test_array[9] > 0) 101: *pVar = (*pVar + c_test_array[17]) & c_test_array[9]; 102: else 103: *pVar = (*pVar + c_test_array[17]); 104: c_test_array[7] = test_c_code3(10); 105: c_test_array[3] = test; - OUT -output------------------------------------------------------------------- SYS$UTC_SERVICES no 0000000000000000 FFFFFFFFFFFFFFFF SYS$VM no 0000000000000000 FFFFFFFFFFFFFFFF SYS$XFCACHE_MON no 0000000000000000 FFFFFFFFFFFFFFFF SYSDEVICE no 0000000000000000 FFFFFFFFFFFFFFFF SYSGETSYI no 0000000000000000 FFFFFFFFFFFFFFFF SYSLDR_DYN no 0000000000000000 FFFFFFFFFFFFFFFF SYSLICENSE no 0000000000000000 FFFFFFFFFFFFFFFF SYSTEM_DEBUG yes 0000000000000000 FFFFFFFFFFFFFFFF SYSTEM_PRIMITIVES no 0000000000000000 FFFFFFFFFFFFFFFF SYSTEM_SYNCHRONIZATION no 0000000000000000 FFFFFFFFFFFFFFFF total images: 53 - PROMPT -error-program-prompt-------------------------------------------------- DBG> go %DEBUG-I-INIBRK, target system interrupted %DEBUG-I-DYNIMGSET, setting image SYS$BASE_IMAGE %DEBUG-W-SCRNOSRCLIN, No source line for address: FFFFFFFF80000310 DBG> show image DBG> go |
Previous | Next | Contents | Index |