Thread Debugger Requirements The thread debugger is designed to make it easier to debug multiple-threaded programs. Multithreaded applications often have tricky bugs relating to the interactions between threads, bugs which can be extremely difficult to track down. This difficulty stems in part from having weak tools for viewing and stepping multiple threads at once. This project aims to create a tool that facilitates these multithreaded debugging operations. The program MUST: * Display several threads at once: - Room for at least three code listings on-screen simultaneously. - Each code listing highlights to the user the current statement being executed by that thread * Allow users to control the threads: - Break, Continue, Step, Next, Finish - Setting breakpoints * Allow users to inspect the threads: - Inspect variables on-screen by clicking on them - Inspect the value of expressions by typing them * Provide information about common multithreading constructs: - If a thread is waiting on a lock (i.e., a mutex), identify the thread that holds the lock - Examine the contents of some common data structures used in concurrent programs (like blocking queues). (Only if a standard implementation exists -- look into this) The program SHOULD: * Display several "collapsed" threads: - Collapsed threads have no code listing - They indicate in summary what a thread is doing - They have Break, Continue, Step, Next, and Finish buttons * Provide a way for the user to type commands rather than clicking if they are experienced (i.e., interact with the underlying GDB layer, if present) The program MAY: * Provide a scripting API. If present, the scripting API MUST: - Allow scripts to perform all actions that could be performed with the GUI - Allow scripts to define new GUI elements for some or all threads, and populate these GUI elements with useful information