# US 2014/0196014 A1 · System and Method of Debugging Multi-Threaded Processes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0196014 A1
- Document ID: US20140196014A1
- Status: Published application
- Kind: A1
- Application number: 14/165,541
- Filed: 2014-01-27
- Published: 2014-07-10
- Earliest claimed: 2006-12-11
- Assignees: Synopsys, Inc.
- Applicants: Synopsys, Inc.
- Inventors: Matthias Spycher; Dietmar Petras
- Web page: https://patentgrep.com/patent/US20140196014A1

## CPC

- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06F 11/3636: {by tracing the execution of the program}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method of debugging a multi-threaded process with at least one running thread and at least one suspended thread is disclosed. Embodiments utilize a blocking function to block the thread of a process while other threads are allowed to run. The blocking function may be executed in a suspended thread by a debugger under control of a thread blocking controller. The other threads may implement interprocess communication channels for enabling communication between the process and another application. A simulated user interface (UI) of a debugger enables interaction with users while a hardware simulation thread is blocked, where blocking of the hardware simulation thread may be implemented by a thread blocking component implemented externally to the debugger. Where a thread blocking controller is implemented within the debugger, a debugger UI may interact with a user while the hardware simulation thread is blocked and interprocess communication threads are running

## Claims

### Claim 1

A method of debugging a platform, said method comprising:
detecting a breakpoint event of a simulator that is communicatively coupled to a debugger, the simulator comprising a first thread simulating the platform and further comprising a second thread implementing an interprocess communication channel between the simulator and an embedded software debugger;
blocking, using the debugger and responsive to detecting the breakpoint event, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate; and
communicating using the second thread implementing the interprocess communication channel while the first thread simulating the platform is blocked, the embedded software debugger accessing a state of the platform using the second thread during the communicating.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
responsive to input of a debug command to the debugger, suspending the first thread and the second thread;
executing the debug command using the debugger while the first thread and the second thread are suspended; and
blocking again, after execution of the debug command, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate.

### Claim 3

A method of debugging a platform, said method comprising:
detecting an event of a simulator that is communicatively coupled to a debugger, the simulator comprising a first thread simulating the platform and a second thread implementing an interprocess communication channel between the simulator and a process that is different than the debugger;
blocking, using the debugger and responsive to detecting the event, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate; and
communicating using the second thread implementing the interprocess communication channel while the first thread simulating the platform is blocked.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
suspending the first thread and the second thread after communicating using the second thread;
executing a debug command using the debugger while the first thread and the second thread are suspended; and
blocking again, after execution of the debug command, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate.

### Claim 5 (depends on 4)

The method of claim 4, wherein the first thread and the second thread are suspended responsive to input of the debug command to the debugger.

### Claim 6 (depends on 4)

The method of claim 4, wherein the first thread and the second thread are suspended responsive to completion of communications using the second thread implementing the interprocess communication channel.

### Claim 7 (depends on 4)

The method of claim 4, wherein the first thread and the second thread are suspended responsive to a predetermined time period without input of a user debug command.

### Claim 8 (depends on 3)

The method of claim 3, wherein the simulator comprises a plurality of second threads implementing a plurality of interprocess communication channels between the simulator and a plurality of processes that are different than the debugger, and further comprising:
communicating using the plurality of second threads implementing the plurality of interprocess communication channels while the first thread is blocked.

### Claim 9 (depends on 3)

The method of claim 3, wherein the event is a breakpoint event, and blocking the first thread comprises:
blocking, using the debugger and responsive to detecting the breakpoint event, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate.

### Claim 10 (depends on 3)

The method of claim 3, wherein communicating using the second thread comprises:
accessing, by the process, a state of the platform using the second thread implementing the interprocess communication channel.

### Claim 11 (depends on 3)

The method of claim 3, wherein the platform simulated by the first thread is a component model.

### Claim 12 (depends on 3)

The method of claim 3, wherein blocking the first thread comprises:
executing a blocking function in the first thread to block the first thread.

### Claim 13 (depends on 12)

The method of claim 12, wherein said blocking function is selected from a group consisting of a sleep function, a semaphore, a wait condition, a conditional variable, and a mutex.

### Claim 14 (depends on 3)

The method of claim 3, wherein the second thread implements an interprocess communication channel between the simulator and an embedded software debugger.

### Claim 15 (depends on 3)

The method of claim 3, wherein the second thread implements an interprocess communication channel between the simulator and a graphical user interface application.

### Claim 16 (depends on 3)

The method of claim 3, wherein the second thread implements an interprocess communication channel between the simulator and a performance measurement application.

### Claim 17

A computer memory storing instructions for debugging a platform, the instructions when executed by a computer system cause the computer system to:
detect an event of a simulator that is communicatively coupled to a debugger, the simulator comprising a first thread simulating the platform and a second thread implementing an interprocess communication channel between the simulator and a process that is different than the debugger;
block, using the debugger and responsive to detecting the event, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate; and
communicate using the second thread implementing the interprocess communication channel while the first thread simulating the platform is blocked.

### Claim 18 (depends on 17)

The computer memory of claim 17, the instructions further causing the computer system to:
suspend the first thread and the second thread after communicating using the second thread;
execute a debug command using the debugger while the first thread and the second thread are suspended; and
block again, after execution of the debug command, the first thread simulating the platform while allowing the second thread implementing the interprocess communication channel to operate.

### Claim 19 (depends on 18)

The computer memory of claim 18, wherein the first thread and the second thread are suspended responsive to input of the debug command to the debugger.

### Claim 20 (depends on 17)

The computer memory of claim 17, wherein the second thread implements an interprocess communication channel between the simulator and an embedded software debugger.
