Debugging multiple tasks, using a single instance of a debugger application intended to be only capable of debugging a single task, is performed by intercepting system calls made by the debugger application to the operating system. The intercepted system calls are directed to an appropriate task, which is one amongst the multiple tasks to be debugged.
One embodiment disclosed relates to a method of obtaining status information from user threads of a target process. A system call is performed from a querying process. The system call creates a kernel debug thread in a kernel entity of the target process. The kernel debug thread further creates a user status thread in a user entity of the target process. The method may be used to obtain the status information without stopping the target process. Another embodiment disclosed relates to an operating system with capability to obtain status information from user threads of a target process. The operating system includes at least the following first and second system calls. The first system call is configured to create a kernel debug thread in a kernel entity of the target process. The second system call is configured to awake the kernel debug thread and pass information to the kernel debug thread.
A system and method for determining a structure within a software kernel using an offset and an element is disclosed. The software kernel is received from a third party for debugging operations. Given one or more element and offset pairs, data extracted from the software kernel is searched to produce a list of possible structures to provide additional information during the debugging operations. The data is extracted into tables with symbol table information. The symbol table information is searched using an offset and an element. Structures are identified using this information and, optionally, a structure size may be provided to further limit the possible structures.
A method of debugging a set of processes is disclosed. There is included providing a first debugger and forking the debugger, thereby creating a set of inner debuggers and an outer debugger. Each of the set of inner debuggers is configured to debug one of the set of processes. There is also included employing the outer debugger to interact with the set of inner debuggers to debug the set of processes.
A method, apparatus, system, and signal-bearing medium that in an embodiment determine whether to stop execution of a program at a breakpoint based on a previous value of a variable. In another embodiment, an attribute is applied to all breakpoints in a breakpoint group. The attribute includes data that is used to decide whether to halt the program upon encountering the breakpoints or allow the program to continue to execute. In another embodiment, breakpoints are excluded or included on the basis of the thread in which the breakpoint is encountered by the program.