Previous | Contents |
In Section 10.2.1 Note 2, both instances of "ALPHA$LIBRARY" should be
changed to "SYS$LIBRARY."
4.29.34 Debugging an Extension
In the example in Section 10.3, both instances of "alpha$library"
should be changed to "sys$library."
4.29.35 Callable Routines Overview
In Section 10.4, "SDA$NEWPAGE" should be changed to "SDA$NEW_PAGE."
The following routines should be added alphabetically to the existing list:
SDA$CBB_BOOLEAN_OPER
SDA$CBB_CLEAR_BIT
SDA$CBB_COPY
SDA$CBB_FFC
SDA$CBB_FFS
SDA$CBB_INIT
SDA$CBB_SET_BIT
SDA$CBB_TEST_BIT
SDA$DELETE_PREFIX
SDA$FID_TO_NAME
SDA$GET_FLAGS
The final paragraph of the section that begins with "So, for example," should be part of the final bullet that begins with, "Some routines expect..."
The following new bullet should be added to the end of the section:
In Section 11.3, in the Boot Command description, the phrase "with boot command" should be changed to "with the boot command."
In the paragraph before the SCD Configuration File description, the final sentence should read, "See the Boot Option Maintenance Menu, as described in the HP OpenVMS System Manager's Manual, Volume 1: Essentials.
In Section 11.3, the first bullet in the XDELTA Commands Description should read:
The System Parameters description in Section 11.3 should have the following two bullets appended:
|
At the end of Section 11.3.2, the following should be added:
The equivalent technique on I64 is as follows: Boot the system with only the SCD flag set (bit 15). When you see that the error has occurred, press Ctrl/P at the console. This action gives control to XDELTA (even though the XDELTA boot flag is not set), and you can now type 1;R. The target kernel will get control and wait for a connection for SCD.
Also, the following new Section 11.3.3 should be added:
The target kernel must have exclusive use of its ethernet device. Some system components, such as DECnet, will not start if the System Code Debugger is loaded. If there are multiple Ethernet devices, and the system is configured to give exclusive access of the SCD Ethernet device to the target kernel, the logical name DBGTK$OVERRIDE should be defined, indicating that the affected system components should start up as normal. The logical name can either be defined systemwide, or in the process where the startup command for the system component will be executed.
In Section 11.11.1, the final sentence of the second paragraph ("To remove symbols...") should be removed.
In Section 11.11.3, the second and third bullets should be removed, and the first bullet ("Access to All Executive Image Symbols") should not be a bullet.
In Section 11.12, the following new paragraph should appear immediately before Example 11-1:
Note that the example displays from Example 11-5 onwards are all taken from an OpenVMS I64 system. On an OpenVMS Alpha system, some of the output is different, but the commands entered are the same on both platforms, with one exception as noted in the accompanying text.
Also in Section 11.12, the references to "V8.2-014" should be changed to "V8.3-003."
Example 11-5 should be replaced with the following:
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> |
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 |
In Example 11-8, the final line should be replaced with the following:
113: x = c_test_array[0]; |
Example 11-9 should be replaced with the following:
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> |
In the paragraph immediately preceding Example 11-10, the reference to line 46 should be replaced with line 93.
Example 11-10 should be replaced with the following:
- 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> |
Example 11-11 should be replaced with the following:
- 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> |
In the paragraph immediately preceding Example 11-12, the reference to line 147 should be replaced with line 94, and the reference to line 146 with line 93.
Example 11-12 should be replaced with the following:
- 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 |
In the paragraph immediately preceding Example 11-13, the following statement should be added before the closing parenthesis:
The suffix _CODE0 is appended if the executive image is sliced.
Example 11-13 should be replaced with the following:
- 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> |
In the paragraph immediately preceding Example 11-14, the reference to line 147 should be replaced with line 94, and the reference to line 146 with line 93.
Example 11-14 should be replaced with the following:
- 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> |
In the STEP/RETURN paragraph preceding Example 11-15, the phrase "on Alpha, or the R8 register on I64" should follow "R0 register".
Example 11-15 should be replaced with the following:
- 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> |
In the first paragraph preceding Example 11-16, the phrase "for address 80002010" should be removed, and the phrase "this image or module" replaced with "INI$BRK."
The current Example 11-16 should be removed; the current Example 11-17 now becomes Example 11-16 and is replaced by the following:
- 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 |
4.29.37 OpenVMS Alpha System Dump Debugger
The title to Chapter 12 should now read "OpenVMS System Dump Debugger,"
and the "Alpha Only" note should be removed.
The first paragraph in Section 12.4 should be replaced with the following:
If SDD cannot find one of the images through this search path, a warning message is displayed. SDD will continue initialization as long as it finds at least two images. If SDD cannot find the SYS$BASE_IMAGE and SYS$PUBLIC_VECTORS files, which are the OpenVMS operating system's main image files, an error message is displayed and the debugger exits.
In Section 12.10, Steps 1 and 2 should be replaced with the following:
DBG> set break test_c_code5 DBG> go DBG> deposit k=0 DBG> go |
Note that the example displays from Example 12-1 onwards are all taken from an OpenVMS I64 system. On an OpenVMS Alpha system, some of the output is different, but the commands entered are the same on both platforms.
In Example 12-1, the reference to "Alpha" should change to "I64," and "V7.2-019" to "V8.3-003".
Example 12-3 should be replaced with the following:
DBG> Set Mode Screen; Set Step Nosource - SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 67: 68: /* We want some global data cells */ 69: volatile __int64 c_test_array[34]; 70: 71: void test_c_code5(int *k) 72: { 73: int i; 74: char str[100]; 75: for(i=0;i<100;i++) 76: str[i]= 'a'; 77: str[99]=0; -> 78: *k = 9; 79: } 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) - OUT -output------------------------------------------------------------------- - PROMPT -error-program-prompt-------------------------------------------------- %DEBUG-I-SCRNOTORIGSRC, original version of source file not found for display in SRC file used is SYS$COMMON:[SYSHLP.EXAMPLES]C_TEST_ROUTINES.C;1 DBG> |
Example 12-4 should be replaced with the following:
- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------ 67: 68: /* We want some global data cells */ 69: volatile __int64 c_test_array[34]; 70: 71: void test_c_code5(int *k) 72: { 73: int i; 74: char str[100]; 75: for(i=0;i<100;i++) 76: str[i]= 'a'; 77: str[99]=0; -> 78: *k = 9; 79: } 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) - OUT -output------------------------------------------------------------------- C_TEST_ROUTINES\test_c_code5\i: 100 C_TEST_ROUTINES\test_c_code5\k: 0 module name routine name line rel PC abs PC *C_TEST_ROUTINES test_c_code5 78 0000000000000CD0 FFFFFFFF800BAED0 *C_TEST_ROUTINES test_c_code4 85 0000000000000D60 FFFFFFFF800BAF60 *C_TEST_ROUTINES test_c_code 118 00000000000010D0 FFFFFFFF800BB2D0 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-------------------------------------------------- %DEBUG-I-SCRNOTORIGSRC, original version of source file not found for display in SRC file used is SYS$COMMON:[SYSHLP.EXAMPLES]C_TEST_ROUTINES.C;1 DBG> examine i,k DBG> show calls DBG> |
Previous | Next | Contents |