Browse Prior Art Database

Operating System Kernel Debugging using Network Connectivity

IP.com Disclosure Number: IPCOM000172120D
Original Publication Date: 2008-Jun-27
Included in the Prior Art Database: 2008-Jun-27
Document File: 4 page(s) / 204K

Publishing Venue

Microsoft

Related People

Martin G. Puryear: INVENTOR [+4]

Abstract

Debugging software is an essential part of creating robust, high performance software. The debugger program can access certain operating system (OS) services in order to stop and control the software module being debugged. The debugger program must run on another machine when debugging involves low-level modules such as the kernel, device drivers and other critical services. Two machine debugging involves two computers: a target computer and a host computer. With the universal availability of network interface connectors on most computers, a kernel debugger was created to be implemented using network connectivity. This invention replaces the serial connection and related system software used in kernel debugging today with a network cable between the debug target and host. This invention allows developers to debug over two machines on a private network connection.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 52% of the total text.

Operating System Kernel Debugging using Network Connectivity

            Debugging software is an essential part of creating robust, high performance software.  Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware.  Most modules can be debugged with a program running on that same computer.  The debugger program can access certain operating system (OS) services in order to stop and control the software module being debugged.  The debugger program must run on another machine when debugging involves low-level modules such as the kernel, device drivers and other critical services.  Two machine debugging involves two computers: a target computer and a host computer.  The target and host computers are directly connected via a cable.  An illustrated example is below in Figure 1.  The host machine (110) is where the debugger program and console resides.  The target (130) contains the module(s) that are being tested and is put under a debug state which enables control completely by the host computer.  The cable connecting the two computers can use a variety of ports.  The most common and reliable connection for kernel debugging is the serial port but USB and IEEE1394 are other possibilities. 

            Although, they were initially ubiquitous on PCs and the de facto standard for kernel debugging interconnects, legacy communication (COM) ports have now become a prime source of confusion and frustration for PC users.  Because more and more new computers do not have serial ports, they are an example of a legacy port that is becoming obsolete.  This makes low-level debugging nearly impossible.  Another option would be to use the USB port but USB debugging is relatively unreliable.  Using 1394 is another option but not all PCs have a 1394 connector.  Operating system vendors, device driver writers and many others share the urgent need for a modern mechanism to run a kernel debugger.  The mechanism should be inexpensive, easy to manufacture and provide standard compatibility across many machines.  A mechanism was developed using a network interface connector to implement kernel debugging. 

            With the universal availability of network interface connectors on most computers, network connectivity is a natural medium to use for kernel debugging.  This invention replaces the serial connection and related system software used in kernel debugging today with a network cable between the debug target and host.  This invention allows developers to debug over two machines on a private network connection. 

            An example of one type of implementation of the kernel debugging transports is using extensions to the Hardware Abstraction Layer (HAL).  The HAL is...