IMPROVED SOFTWARE DEBUGGING SYSTEM AND METHOD ESPECIALLY ADAPTED FOR CODE DEBUGGING WITHIN A MULTI-ARCHITECTURE ENVIRONMENT

Abstract: In a computer system that embodies a first hardware (X) architecture and includes a memory system and at least one simulator for a second (Y) architecture and a system for executing and debugging multiple codes having an environment manager that handles cross-domain calls, a system is provided for debugging code in each domain as part of said multi-code executing and debugging system in a multi-architecture environment. The debugging system includes means for receiving calls for debugger operation from either the X domain or the Y domain. Commands are generated for debugging operations in either domain. The commands that may be generated by the user include RUN and STEP commands for the machine state in the debug domain. General support commands and debug operations support commands may also be generated. The debug operations support commands include EXAMINE, DEPOSIT, SET BREAKPOINT AND CANCEL BREAKPOINT. The latter commands are implemented differently for the different domains.

Description: IMPROVED SOFTWARE DEBUGGING SYSTEM AMD METHOD ESPECIALLY ADAPTED FOR CODE DEBUGGING WITHIN A MULTI-ARCHITECTURE ENVIRONMENT BACKGROUND OF THE INVENTION The present invention relates to methods and systems for debuggxng software and more particularly to debugging methods and systems especially adapted for code debugging in a system that executes multiple codes within a multi- architecture environment. A software debugger is a mechanism that is generally employed to detect and correct malfunctions in a newly developed program or a modified existing program that is being tested for proper execution. Conventional debuggers permit a user to execute the program in single steps or to set stops or breakpoints. Stops or breakpoints are points in a program at which the program is to be stopped for user interaction for examination or modification of the memory content or of program state information. If the software to be debugged is designed for use on a new hardware architecture that is not available for program execution, a software simulator may be employed for execution of some kinds of software on an available computer having a native and different architecture. Program debugging may then be provided through the simulated architecture. However, user or other higher level software normally has external run-time dependencies that make use of a conventional simulator and debugger to execute and debug such software on the native architecture impractical or impossible. For example, run-time libraries and the operating system itself may not be available for the new architecture. A new program that makes library and operating system calls will not be executable by the simulator for debugging in the native architecture unless extensive modifications are made in the new program to remove the unavailable external dependencies. A need has thus existed for executing, testing and debugging new software designed for a new hardware architecture even though the actual new hardware, a new operating system therefor and/or support software are not available. A new system and method disclosed in the cross-referenced patent application 1870-0411 and other cross-referenced applications are directed to meeting this and related needs through the execution of multiple codes in a multiple architecture environment. A new callable simulator employable in the new multi-architecture system is disclosed in the cross-referenced application 1870-0420. From the standpoint of debugging in a multi- architecture environment, the user needs to be able to interact with program code in either architecture even though the codes make use of different features of the two architectures. A multiple architecture debugger thus requires simultaneous access to the multiple architectures. The present invention is directed to a new and improved debugger system and method that can be employed to debug a program code with simultaneous access to multiple architectures in a multi-code execution system within a multi-architecture environment. SUMMARY OF THE INVENTION In a computer system that embodies a first hardware (X) architecture and includes a memory system and at least one simulator for a second (Y) architecture and a system for executing and debugging multiple codes having an environment manager that handles cross-domain calls, a system is provided for debugging code in each domain as part of said multi-code executing and debugging system in a multi-architecture environment. The debugging system includes means for receiving calls for debugger operation from either the X domain or the Y domain. In response to calls, debugging commands are generated for application to the domain where debugging operations are being performed. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one embodiment of the invention and, together with the description, provide an explanation bf the objects, advantages and principles of the invention. In the drawings: FIGURE 1 shows a functional block diagram of a system for executing and debugging multiple codes in a multi-architecture environment; FIGURE 2 shows a more detailed functional block diagram of a software system employed in the system of FIGURE 1 and including a debugger arranged in accordance with the present invention; FIGURE 3 shows a functional block diagram representing the software and hardware structure of the debugger of FIGURE 2 and related system components; FIGURE 4 shows a general flow chart for a debugger program included as part of the debugger in FIGURE 3; FIGURE 5 shows a flow chart for a simulator/debugger driver loop included as a part of an environment manager to provide control and coordination for the debugger of FIGURE 3; FIGURE 6 shows a flow chart for a set machine-state routine executed by the debugger program to set a STEP machine state; FIGURE 7 shows a flow chart for a set machine-state routine executed by the debugger routine to set a RUN machine state; FIGURES 8A-8D show respective flow charts for routines employed by the debugger program to execute domain dependent commands; FIGURE 9 shows a flow chart for a cross-domain pre- check routine provided by the environment manager in support of the debugger; and FIGURE 10 shows a flow chart for a routine that determines the domain of a memory address on request from another routine. DESCRIPTION OF THE PREFERRED EMBODIMENT More particularly, there is shown in FIGURE 1 a system 10 that is arranged to execute and debug multiple codes in a multi- architecture environment. An X processor 12 forms a part of a real X architecture that provides for the execution of multiple codes including X code. The X code includes programmed instructions designed to operate in the X architecture. Generally, the system 10 can be operated to process and execute multiple codes, but in the preferred embodiment, the system 10 is structured for executing two codes, the X code and another code designated as Y code. The Y code includes programmed instructions designed to execute on a machine whose architecture is being simulated by the X processes 12. In the preferred embodiment, the system 10 may directly execute a new user level or other level program compiled in or translated to the Y code, and in doing so, make use of X operating system and support software. As an example of a commercial application of the system 10 for translated X program code, the X code may be a complex instruction set code (CISC) for which a hardware implementation exists, and the Y code may be a reduced instruction set code (RISC) for which no real RISC hardware exists. A possible CISC system is the VAX® computer system manufactured by the assignee of the present application. Reference is made to the cross- referenced 1870-0409 and 0410, 0411, 0416, 0419, 0420, 0421, 0422 and 0423 which are related to CISC-to-RISC translation systems. The system 10 further includes a memory system 14 having a general layout for program and data components as shown in FIGURE 1. An X loader 16 provides for program code entry into the memory system 14 as more fully described in the cross-referenced application 1870-0411. Figure 2 shows the architecture of a software system 100 which can be executed by the system 10. A callable simulator 104 functions as part of software system 100 (FIGURE 2) within a second architecture (domain, which is preferably a Y architecture embodied in the X hardware. The simulator 104 is structured to emulate Y hardware on the X hardware that may be under development and unavailable. Generally, the simulator 104 executes Y instructions on call from X code through an environment manager 102. Calls may also be made from the Y code through the environment manager 102 for X code execution. For example, the Y code may represent a user level application program and may call for execution of a routine that is located in an X library or it may make a call requiring operating system processing in the X domain. For a detailed description of the structure and operation of the simulator 104, reference is made to the cross-referenced application 1870-0420. A debugging capability need not be included in the system 10 where system operation is limited to multi-code execution. However, debugging is provided where the system 10 is to be used for code testing. A debugger system 110 provides for debugging operations within the Y domain under control of the environment manager 102. In its total operation, the debugger system 110 provides the user with control over the execution of code in either domain so that the whole execution process may be examined and modified to correct malfunctions. Generally, the debugger system provides the procedures needed for debugging operations such as setting breakpoints in both the X and Y domains. The debugger 110 is structured for interaction with the callable simulator 104 within the system 100. A cross-domain detector system 106 is employed by the environment manager 102 to determine when a cross- domain call is made during the execution of either the X code or the Y code. An X-Y jacketing system 108 operates within the environment manager system 102 to provide the X and Y executable instruction interfacing needed to implement cross-domain calls between routines. Reference is made to 1870-0421 and 1870-0422 for more detailed disclosure of the detector and jacketing systems 106 and 108. The environment manager 102 exercises supervisory control over the callable simulator 104 and the debugger 110 through the execution of a driver loop 112. Support routines 114 provide various services, especially on request from the debugger 110. With use of the code translation system and method disclosed in the cross-referenced applications 1870-0409 and 1870-0410, CISC user level and other X programs can be translated to functionally equivalent RISC Y programs which can be executed on real CISC X hardware by the system 10 for testing and debugging purposes even though operable RISC Y hardware is unavailable. Advantageously, an X program can be partly translated to Y program code, or a new program can be partly written in Y code for execution with supporting or other X program code, -and the mixed X-Y program code can be executed by the system 10 for testing and debugging of both the X and Y codes. The Y code is executed, tested and debugged on the simulated architecture and the remaining X code is executed, tested and debugged on the native architecture. With successful testing of the existing Y code, additional segments of X code can be translated for stepped Y code testing and debugging until the X code is fully translated and the Y code testing and debugging is completed. With the use of progressively stepped testing and debugging, the entire testing and debugging process is facilitated. Overall, a program can be executed and tested for the Y architecture by translating or compiling it into Y code and ' running the Y code on the callable system simulator with the run-time environment for the Y code being provided by the operating system and run-time libraries executing on the X or native hardware architecture that is included in the multi-architecture system. The composite software thus includes X and Y codes that are properly executed on the combined X (real) and Y (simulated) architectures. In the preferred embodiment described herein, the operating system for the composite software system is structurally included in the X architecture. The code boundary between the real and simulated architectures is generally open to the system user's needs. For example, the code boundary can be between the program being ported and the X operating system, or as indicated above it can even be within the program being ported. SUBSTITUTE SHEET The software system 100 generally has application to widely different architectures. The system 100 also has application to architecture-implementation systems that have different operating systems and different calling systems, but such application is facilitated if the architecture-implementation systems have similar operating systems and similar calling standards. Reference is made to the cross-referenced application 1870-0422 for additional background information on calling systems and differences among them. DRIVER LOOP In FIGURE 5, there is shown a flow chart for the driver loop 112 which drives the simulation/debugging operation. Entry is made to the loop 112 at block 118 when a call is made from X code, often from X application code for execution of a Y routine through the jacketing system 108. Jacketing provides interfacing between the X and Y codes to adjust for calling standard differences. In block 120, parameters are set up as part of the jacketing process, and in particular X parameters are placed in appropriate Y locations for use during Y code execution. Thus, for normally jacketed routine calls, jacketing tables are referenced in the jacketing system 108 to determine where parameters come from in the X domain and where the corresponding values must be placed in the Y domain. For auto-jacketed routine calls, standard call rules are embedded in special code for this purpose in the jacketing system 108. More detail on jacketing for domain interface purposes is set forth in the cross-referenced application 1870-0422. A special or distinguished return address is placed in the standard return-address register. The distinguished return address is outside the address bounds previously established as containing Y code. It must also be different from an address that might be used to encode a Y-X call. In functional block 122, a string variable named ENVjCMD is set by default to RUN mode (continuous instruction execution) or it may be set to STEP mode (instruction-by-instruction execution) by auser selection from the debugger 110. For example, the user may decide to perform maintenance on the particular Y routine that has been called by an X code routine, and accordingly may make a STEP MODE selection for the Y domain. The simulator 104 is called by block 124 to simulate the Y machine in accordance with the selected mode and the current Y machine state. One or more Y instructions are then executed in the Y domain by the X hardware. Block 126 next provides for driver loop termination and return according to detected conditions returned from the simulator 104 after its operation has terminated. If the Y program counter is determined to be out of bounds previously established as containing Y code and data as indicated by block 126, a test block 130 determines whether the Y program counter is making a return to the caller X program. If the Y program counter matches the distinguished return address in the block 130, execution of the Y routine has been completed and is making a return to its X caller. Block 132 then provides jacketing services, i.e., it copies values as appropriate from the Y result register(s) to the X domain. Normally jacketed calls are processed with the jacketing tables used to initiate the original call. The previously referenced special jacketing code is used for auto-jacketed calls. Simulation is complete at this point as indicated by exit block 134. If the test block 130 determines that the Y program counter corresponds to a jacketing table entry and does not match the distinguished return address, a call is being made for execution of an X routine within the current execution process in the Y domain (in the absence of a programming error) . Block 136 then provides jacketing services, i.e., it initiates a Y-X call and the jacketing system 108 accesses the jacketing tables to obtain the information needed to copy parameters from the Y-domain to the X domain, the address of the X routine being called, etc. When a return is made to the block 136 from the called X routine, the return value is copied into the Y domain and simulation is resumed as indicated by path 137. With reference again to block 126, if the STEP mode had been requested and the simulation termination is accordingly determined to be a case called Step Done as indicated by block 138, functional block 140 calls the debugger 110 to indicate completion of the requested step operation and pass the previously returned status and the variable ENV__CMD. A return to the simulator enables resumed simulation without requiring direct simulator recall by the debugger 110. The debugger 110 interprets the status and may make a report to the user. Additional simulator step operations may be requested by the debugger 110 in accordance with a previously established internal script or by user selection. The driver variable ENV_CMD is set to RUN or STEP according to debugger requests. The debugger 110 calls the environment manager 102 to perform other inquiry and status control functions (such as set BREAKPOINT) . In the present embodiment, simulation is controlled only by the driver 112. If the simulation termination is due to an abort 142 or a breakpoint 144 or Y errors 146, block 148 calls the debugger 110 and operates in the manner described for the block 140. DEBUGGER The debugger 110 provides for debugging operations in both the X and the Y domains and is shown in greater detail in FIGURE 3. In addition, portions of the common multi-architecture memory 14 most pertinent to debugger operation, and debugger related routines housed in other components of the software system 100 are shown in FIGURE 3. A debugger execution program 200 is structured to be interactive with a user as indicated by block 202. Accordingly, the user is enabled to detect and correct malfunctions in X or Y program code being executed by the multi-code execution and debugging system 10. Basic debugging functions are commonly provided by the debugger 110 for both the X domain and the Y domain. The procedures and mechanisms by which basic debugging functions are implemented are different for the X and Y domains as subsequently described more fully herein. To provide for program malfunction detection and correction, the debugger program 200 is further structured to implement commands through domain dependent support or service routines 204 and general support routines 206. As indicated by block 208, the state of the active machine (X or Y) is set either to STEP instructions or to RUN instructions in the code being executed. Various debugger support routines 210 are housed in the simulator 104 and accessed through the control of the environment manager 102. Thus, address domain routine 212 and a cross-domain pre-check routine 214 are accessed in the environment manager 102 to provide additional support for debugger operation. The " address domain routine 212, a flow chart for which is shown in FIGURE 10, determines whether an instruction address lies within the Y domain or the X domain as needed for simulator/debugging operations. In the preferred embodiment, the routine 212 (FIGURE 10) employs a list 213 of the address ranges that lie within the Y domain. Any requested address 215 in one of the address ranges on the list is returned as Y domain by block 217, and any requested address not on the list is returned as X domain by block 219. The routine 212 exits at block 221. Appropriate list and logic modifications are made where more than two architectures are to be serviced. The cross-domain pre-check routine 214 (FIGURE 3) enables the debugger 200 to determine whether the instruction about to execute (current program counter) will cause a change of code execution domain from X to Y or Y to X. The simulator/debugger driver loop 112 (FIGURE 2 and 5) is executed by.the environment manager 102 to provide basic control over execution of Y code and for invoking the operation of the debugger for Y domain debugging as required. The memory system 14 contains the X and Y program codes 218 and 220 being executed by the native (X) architecture and the simulated (Y) architecture. Other memory contents related to debugger operations includes a Y domain address list 213, the breakpoint tables 217 used by the simulator 104 and by the debugger 110, and the state 219 of the Y architecture program (i.e., register state of the simulated processor) . In the present embodiment of the invention, a program counter is provided for each domain. Specifically, an X program counter and a Y program counter are provided and the X and Y program counters are essentially independent of each other. The X program counter is a register that contains the address of the next instruction as fetched by X hardware from the memory instruction list of the X code. The Y program counter is a register in the X hardware structured to be part of the Y simulator and it similarly contains the next Y instruction as fetched by the simulator from the memory instruction list of the Y code. SUBSTITUTE SHEET DEBUGGER FLOW CHART The debugger program 200 performs its described functions in accordance with the flow chart shown in FIGURE 4. The debugger program 200 is entered at block 220 from the X domain or from the Y domain if the driver loop 112 (FIGURE 2 and 5) in the environment manager 102 finds a Y domain call. When the debugger 110 is operational, the debugger program 200 accordingly can be entered from X code or Y code. Entry from either X or Y code occurs: 1. when the code execution starts and a debug prompt leads to the performance of initial tasks; 2. when a breakpoint is reached; 3. when a STEP command generated by the debugger is completed; 4. when the X or Y code generates an exception condition; and 5. when the code execution ends. Entry from the X code is made, in the present embodiment, through the standard X hardware and the standard X operating system. Entry from the Y code is made through the driver loop 216 (FIGURE 5) in the environment manager 102. At entry time for Y code debugging, the driver loop 112 (FIGURE 2 and designated as 216 in FIGURE 4 calls the debugger program 200 and transfers to it the current program state and a command buffer to fill with ET a command that is to be executed on return from the debugger program 200. The name of the command buffer is ENV__CMD -and its purpose is to control the execution state of the simulator 104. In a user interaction block 222, the current Y program state is reported to the user and a command is requested from the user. Once a support command or an execution state command is entered by the user, the block 222 parses and executes the command. In the preferred embodiment, each general support command is executed by an associated routine (not specifically shown) in the block 206, and a return is then made to the user interaction block 222. The general support commands are conventional commands that are always executed in the same way regardless of domain. In the present embodiment, such commands include those that: 1. control the appearance of the screen or windows; 2. control the form of displayed information such as changing the default radix for numeric display from decimal to hexadecimal; or 3. provide other functions as set forth in a VMS debugger manual, Order Number AA-LA59A-TE for the VAXΦ/VMS Operating System published by the present assignee. Program domain dependent support commands EXAMINE, DEPOSIT, SET BREAK, and CANCEL BREAK are executed by respective routines in the block 20 . These routines are described in greater detail subsequently herein. After execution of any domain dependent support command, a return is made to the user interaction block 222. If the user requests that the machine state be set in the block 222, a STEP command is executed by block 224 with dependence on the current program domain or a RUN command is executed by block 226 with dependence on the current program domain. After a STEP or RUN command, the debugger program 200 sets up the proper conditions to apply the command to the domain under debugger control and, as indicated by block 227, returns control to the Y user program which then proceeds to execute from the point at which it was interrupted by a call to the debugger 110. The set machine state to STEP routine of block 224 is shown in greater detail in FIGURE 6. Its execution path depends on the domain to which the STEP command is to be applied and operated under debugging control, herein called the "debug domain". Generally, the STEP command causes the debugger 110 to direct that a single instruction be executed in the domain in which code is to be executed and then request a further command from the user through a reentry to the debugger in block 220.. Functional block 230 calls the cross-domain pre- check routine 214 (FIGURE 3) for execution. Routine 214 It determines whether the current instruction will cause a domain change, i.e., an execution switch from one domain to the other. If so, the address of the first instruction that will be executed in the new domain is also determined. If a domain change is detected, branch 231 is followed. Block 232 sets a breakpoint at the address of the first instruction that will be executed in the new domain. Next, the machine state is set to RUN by block 234 so that code can be executed until the breakpoint just set is reached. Finally, an exit is made from the branch 231 to the user program, as indicated by the reference character 236. A jacketing code executes the domain change after an exit from block 224 via the branch 231. This is more fully disclosed in the cross-referenced application 1870-0422. After the new code execution reaches the breakpoint, the debugger is reentered with an indication that the STEP routine has been completed. Branch 233 is followed and block 235 becomes operational where no domain crossing is detected by the block 230. Block 235 determines whether the current domain is X or Y since the STEP operation is implemented differently for X and Y domains. The SUBSTITUTESHEET address domain routine 212 (FIGURE 3) is called from the environment manager 102 to determine the domain on the basis of the current instruction execution address. If the domain is determined to be the simulated (Y) domain, block 238 generates a STEP command to ENV j CMD in the buffer received on debugger program entry. In this manner, a command is made to the environment manager 102 to execute a single instruction in the Y domain. In response, the driver loop 216 (FIGURE 5) facilitates execution of this command through a STEP routine in the debug support block 210 (FIGURE 3) of the Y domain simulator 104. More detail on the STEP support in the simulator 104 is presented in the cross-referenced application 1870-0420. If the domain is determined to be the native (X) architecture, block 240 sets the X state to STEP using the standard X hardware for STEP implementation. For example, in the VAX® system, the SINGLE STEP mode is set by a single bit in the processor state longword. After execution of the program branch 233 through the block 238 or the block 240, the routine exits at block 236 for a return to the user program through the block 227 (FIGURE 4) . Where the machine state is to be set to RUN by the user in FIGURE 4 or by programming in FIGURE 6, the block 226 executes the routine shown in FIGURE 7 and SUBSTITUTE SHEET its execution path is also dependent on the domain to which the RUN command is to be applied. After entry in block 250, functional block 252 determines the current domain in the manner described for the block 235 in FIGURE 6. If the Y domain is detected, block 254 places a RUN command in ENV_CMD in the buffer provided by the environment manager 102. The driver loop 216 then applies the command to the simulator 104. If the X domain is. detected, block 256 sets the X state to RUN by a return to X program execution. After execution of block 254 or 256, the routine exits at block 258 to the calling routine. Routines for selected ones of the domain dependent routines are shown in FIGURES 8A-8D. After entry to each routine, the current domain is first determined by block 270A, 270B, 270C, or 270D, respectively, as described for the block 235 in FIGURE 6. A domain dependent routine 272 in FIGURE 8A executes an EXAMINE command which enables the user to examine a memory location. If the target memory address lies in the X domain, block 274 directly executes the reading of the X domain location in the common memory through X hardware operations. If the target'address lies in the Y domain, block 276 requests the environment manager 102 to process the EXAMINE command. The environment manager 102 then operates through the simulator 104 to read the Y domain address in the common memory and provide the data to the user. The EXAMINE routine 272 is ended at exit block 278 and the debugger program 200 then awaits further commands from the user interaction block 222 (FIGURE 4). Another domain dependent routine, DEPOSIT routine 280 shown in FIGURE 8B, executes a DEPOSIT command which enables the user to write to a memory location. If the target memory address lies in the X domain, block 282 directly writes to the X domain location in the common memory. If the target memory address lies in the Y domain, block 284 requests the environment manager 102 to process the DEPOSIT command. The environment manager 102 then operates through the simulator 104 to write to the Y domain location in the common memory. The DEPOSIT routine 280 is ended at exit block 286 and the debugger program 200 awaits further commands from the user interaction block 222 (FIGURE 4) . A SET BREAKPOINT routine 290 in FIGURE 8C is also domain dependent and executes a SET BREAKPOINT command made by the user through the user interaction block 222 (FIGURE 4) or as a result of a domain crossover by the current instruction in the execution of a STEP command by the block 232 (FIGURE 6) . As previously indicated, a breakpoint needs to be set at the target address of a domain change instruction in implementing a STEP command. If the target address for the breakpoint lies in the X domain, a functional block 292 writes a breakpoint directly into the X program code. If the address is in the Y domain, a block 294 requests the environment manager 102 to process the command and a breakpoint is then set in the Y program code through operation of the simulator 104. After the commanded breakpoint has been entered into the program code, block 296 adds the entry to a breakpoint table for later use an appropriate SHOW or CANCEL routine. With use of the breakpoint table, the debugger program 200 can later display the list of breakpoints or delete breakpoints selectively. The SET BREAKPOINT routine 290 is ended at exit block 298 after table entry and a return is made to the requesting routine. A CANCEL BREAKPOINT routine 300, which is also domain dependent, executes a CANCEL BREAKPOINT command made by the user in the user interaction block 222 (FIGURE 4) . This command provides for cancelling a breakpoint previously written by the debugger program 200 at some program code address. If the target address for the breakpoint lies within the X domain, block 302 deletes the specified breakpoint that it had previously written into the X program code. If the target address lies within the Y domain, block 304 requests the environment manager 102 to process the command and the specified breakpoint is then removed from the Y code through operation of the simulator 104. After the cancellation operation is completed, block 306 removes the cancelled breakpoint from the breakpoint list. An exit is made from the CANCEL BREAKPOINT routine 300 at block 308 for further user commands. In FIGURE 9 there is shown a flow chart for the cross-domain pre-check routine 214 (FIGURE 3) which is resident in the environment manager 102. The routine 214 is entered to determine whether the instruction will cause a domain change. A functional block 312 first determines the current domain through operation of the address domain routine 212 (FIGURE 10) on the current program counter in a manner like that previously described. Branch 314 is followed if the current domain is the Y domain and branch 316 is followed if the current domain is the X domain. In the branch 314, the Y instruction is decoded by block 318 to determine the next instruction. The target address of the next instruction is then determined by block 320 through execution of the address domain routine 212 (FIGURE 10) . If the target address is in the Y domain, block 321 generates an indication for the caller that the instruction will not change the domain. However, if the target address is in the X domain, block 325 generates an indication for the caller that the instruction will change the domain, and further generates the address for the next instruction for a breakpoint entry. In the branch 316, the X instruction is decoded by block 322 to determine the next instruction. The target address of the next instruction is then determined by block 324 through execution of the address domain routine 212 (FIGURE 10) . If the target address is in the X domain, block 323 generates an indication for the caller that the instruction will not change the domain. If the target address is in the Y domain, the block 325 generates the domain change indication as previously described. The cross-domain pre-check routine 214 ends with a return to the caller as indicated by block 326. Various modifications and variations can be made in the improved software debugging system and method especially adapted for code debugging within a multi-architecture environment of the present invention by those skilled in the pertaining art without departing.from the scope and spirit of the invention. It is accordingly intended that the present invention embrace such modifications and variations to the extent they come within the scope of the appended claims and their equivalents.

Claims: WHAT IS CLAIMED IS: 1. In a computer system that embodies a first (X) hardware architecture and includes a memory system and at least one simulator for a second (Y) architecture and a system for executing and debugging multiple codes having an environment manager that handles cross-domain calls, a system for debugging code in each domain as part of said multi-code executing and debugging system in a multi-architecture environment, said debugging system comprising: means for receiving calls for debugger operation from the X domain; means for receiving calls for debugger operation from the Y domain; means for generating user debugging commands for the X and Y domains after debugger operation is initiated by a call; and means for applying said debugging commands to the debug domain. 2. The debugging system of claim 1 wherein said generating means includes means for generating setting commands for the machine execution state in the debug domain. 3. The debugging system of claim 2 wherein said machine state setting commands include setting a STEP state and setting a RUN STATE. 4. The debugging system of claim 3 wherein a STEP command has been requested and said STEP setting command generating means and said applying means include: means for detecting whether a cross-domain execution switch will be required by the current instruction; means for setting a breakpoint at the address of the first instruction to be executed in the new domain if a cross-domain execution switch will be required; and means for generating a set RUN command for application to the new domain machine to create in effect a STEP execution upon execution entry to the new domain. 5. The debugging system of claim 4 wherein a STEP command has been requested and said STEP setting command generating means and said applying means include: means for determining the current executing domain; means for generating an output set STEP command for application to said simulator if the Y domain is executing and no domain change will be required; and SUBSTITUTE SHEET means for generating an output set STEP command for application to said X hardware if the X domain is executing and no domain change will be required. 6. The debugging system of claim 3 or 4 or 5 wherein said simulator STEP command is output to said environment manager for application to said simulator. 7. The debugging system of claim 3 wherein a RUN command has been requested and said RUN setting command generating means and said applying means include: means for determining the current executing domain; means for generating an output set RUN command for application to said simulator if the Y domain is executing; and means for generating an output set RUN command for application to said X hardware if the X domain is executing. 8. The debugging system of claim 7 wherein said simulator RUN command is output to said environment manager for application to said simulator. 9. The debugging system of claim 1 wherein said command generating means includes means for generating support commands for debugging operations. 10. The debugger system of claim 9 wherein said support commands include commands that are domain dependent since they are applied by different means to the different domains. 11. The debugger system of claim 10 wherein said support commands further include commands that are applied by like means to the different domains. 12. The debugger system of claim 10 wherein said domain dependent commands include memory access commands and breakpoint processing commands. 13. The debugging system of claim 12 wherein said memory access commands include examine and deposit commands. 14. The debugging system of claim 13 wherein said command generating means and said applying means includes: means for determining the current executing domain; means for generating an address read or write command for processing by said simulator if the target address of said read or write command lies in the Y domain; and means for generating an address read or write command for direct execution by said X hardware if the target address of said read or write command lies in the X domain. 15. The debugging system of claim 14 wherein said simulator read or write command is output to said environment manager for application to said simulator. 16. The debugging system of claim 12 wherein said breakpoint processing commands include set breakpoint and cancel breakpoint commands. 17. The debugging system of claim 16 wherein command generating means further includes means for generating a breakpoint table to which set breakpoints are added and cancel breakpoints are removed. 18. The debugging system of claim 16 wherein said command generating means and said applying means include: means for determining the execution domain of the target breakpoint address; means for generating a breakpoint address set or cancel command for application to said simulator; means for generating a breakpoint address set or cancel command for direct execution by said X hardware. 19. The debugging system of claim 18 wherein said simulator breakpoint address set or cancel command is output to said environment manager for application to said simulator. 20. In a computer system that embodies a first hardware (X) architecture and includes a memory system and at least one simulator for a second (Y) architecture and a system for executing and debugging multiple codes having an environment manager that handles cross-domain calls, a system for debugging code in each domain as part of said multi-code executing and debugging system in a multi-architecture environment, said debugging system comprising: means for receiving calls for debugger operation from the X domain; means for receiving calls for debugger operation from the Y domain; means for generating setting commands for the machine execution state in the domain in which debugging operations are being performed after debugger operation is initiated; and means for generating support commands for debugging operations in each domain after debugger operation is initiated. 21. The debugging system of claim 20 wherein said machine state setting commands include setting a STEP state and setting a RUN STATE. 22. The debugging system of claim 21 wherein said setting command generating means includes when a STEP setting command has been generated: means for detecting whether a cross-domain execution switch will be required by the current instruction; means for setting a breakpoint at the address of the first instruction to be executed in the new domain if a cross-domain execution switch will be required; and means for generating a set RUN command for application to the new domain machine to create in effect a STEP execution upon execution entry to the new domain. means for determining the current executing domain; means for generating an output set STEP command for application to said simulator if the Y domain is executing and no domain change will be required; and means for generating an output set STEP command for application to said X hardware if the X domain is executing and no domain change will be required. 23. The debugging system of claim 20 or 21 or 22 wherein said RUN setting command generating means includes when a RUN command has been selected: said current executing domain determining means; means for generating an output set RUN command for application to said simulator if the Y domain is executing; and means for generating an output set RUN command for application to said X hardware if the X domain is executing. 24, The debugging system as set forth in claim 20 or 21 or 22 or 23 wherein said support command generating means includes memory access commands and breakpoint processing commands. 25. The debugging system of claim 24 wherein said support command generating means includes: means for generating an address read or write command for processing by said simulator if the target address of said read or write command lies in Y domain; and means for generating an address read or write command for direct execution by said X hardware if the target address of said read or write command lies in X domain. 26. The debugging system of claim 24 or 25 wherein said support command generating means includes set breakpoint and cancel breakpoint commands. 27. The debugging system of claim 26 wherein said support command generating means includes: means for generating a breakpoint address set or cancel command for application to said simulator; means for generating a breakpoint address set or cancel command for direct execution by said X hardware. 28. In a method for operating a computer system that includes a memory and embodies a first (X) hardware architecture at least one simulator for a second (Y) architecture and wherein the computer operating method includes a process for executing and debugging multiple codes employing an environment manager to handle cross-domain calls, a subprocess for debugging code in each domain as part of said multi- code executing and debugging process in a multi- architecture environment, the steps of said debugging subprocess comprising: receiving calls for debugger operation from the X domain; receiving calls for debugger operation from the Y domain; generating user debugging commands for the X and Y domains after debugger operation is initiated by a call; and means for applying said debugging commands to the debug domain. 29. The debugging subprocess of claim 28 wherein said generating step includes generating setting commands for the machine execution state in the debug domain. 30. The debugging subprocess of claim 29 wherein said machine state setting commands include setting a STEP state and setting a RUN STATE. SUBSTITUTE SHEET 31. The debugging subprocess of claim 30 wherein a STEP command has been requested and said STEP setting command generating step and said applying step include: detecting whether a cross-domain execution switch will be required by the current instruction; setting a breakpoint at the address of the first instruction to be executed in the new domain if a cross-domain execution switch will be required; and generating a set RUN command for application to the new domain machine to create in effect a STEP execution upon execution entry to the new domain. 32. The debugging subprocess of claim 31 wherein a STEP command has been requested and said STEP setting command generating step and said applying step include: determining the current executing domain; generating an output set STEP command for application to said simulator if the Y domain is executing and no domain change will be required; and generating an output set STEP command for application to said X hardware if the X domain is executing and no domain change will be required. 33. The debugging subprocess of claim 30 or 31 or 32 wherein said simulator STEP command is output to said environment manager for application to said simulator. 34. The debugging subprocess of claim 30 wherein a RUN command has been requested and said RUN setting command generating step and said applying step include: determining the current executing domain; generating an output set RUN command for application to said simulator if the Y domain is executing; and generating an output set RUN command for application to said X hardware if the X domain is executing. 35. The debugging subprocess of claim 34 wherein said simulator RUN command is output to said environment manager for application to said simulator. 36. The debugging subprocess of claim 1 wherein said command generating step includes generating support commands for debugging operations. 37. The debugger subprocess of claim 36 wherein said support commands include commands that are domain dependent since they are applied differently to the different domains. 38. The debugger subprocess of claim 37 wherein said domain dependent commands include memory access commands and breakpoint processing commands. 39. The debugging system of claim 38 wherein said breakpoint processing commands include set breakpoint and cancel breakpoint commands. 40. The debugging subprocess of claim 39 wherein said command generating step further includes generating a breakpoint table to which set breakpoints are added and cancel breakpoints are removed. 41. In a method for operating a computer system that includes a memory and embodies a first (X) hardware architecture at least one simulator for a second (Y) architecture and wherein the computer operating method includes a process for executing and debugging -multiple codes employing an environment manager to handle cross-domain calls, a subprocess for debugging code in each domain as part of said multi- code executing and debugging process in a multi- architecture environment, the steps of said debugging subprocess comprising: receiving calls for debugger operation from the X domain; receiving calls for debugger operation from the Y domain; generating setting commands for the machine execution state in the domain in which debugging operations are being performed after debugger operation is initiated; and generating support commands for debugging operations in each domain after debugger operation is initiated. 42. The debugging subprocess of claim 41 wherein said machine state setting commands include setting a STEP state and setting a RUN STATE. 43. The debugging subprocess of claim 42 wherein said setting command generating step includes, when a STEP setting command has been generated: detecting whether a cross-domain execution switch will be required by the current instruction; setting a breakpoint at the address of the first instruction to be executed in the new domain if a cross-domain execution switch will be required; and generating a set RUN command for application to the new domain machine to create in effect a STEP execution upon execution entry to the new domain; determining the current executing domain; generating an output set STEP command for application to said simulator if the Y domain is executing and no domain change will be required; and generating an. output set STEP command for application to said X hardware if the X domain is executing and no domain change will be required. 44. The debugging subprocess of claim 41 or 42 or 43 wherein said RUN setting command generating means includes, when a RUN command has been selected: said current executing domain determining step; generating an output set RUN command for application to said simulator if the Y domain is executing; and generating an output set RUN command for application to said X hardware if the X domain is executing. 45. The debugging subprocess of claim 40 or 42 or 43 or 44 wherein said support command generating step includes generating access commands and breakpoint processing commands. 46. The debugging subprocess of claim 45 wherein said support command generating step includes generating set breakpoint and cancel breakpoint commands.

Inventors: BRENDER RONALD F, GRIEB HENRY N III, WOOLDRIDGE JAMES A, BRENDER, RONALD, F., GRIEB, HENRY, N., III, WOOLDRIDGE, JAMES, A.
Applicants: DIGITAL EQUIPMENT CORP, DIGITAL EQUIPMENT CORPORATION
Application year: 1992
Main classification: G06F11
IPC codes: G06F9, G06F11