In a distributed
system that includes a debug
server and debug clients coupled for data communications through a data communications network, where the debug
server includes a debug administrator, a message
router, a back-end
debugger, and a debuggee,
collaborative software debugging includes receiving application-level messages, including receiving, from a requesting debug
client, a request to establish a dynamic
breakpoint at location in
source code; routing the application-level messages among the debug clients, the debug administrator, and the back-end
debugger, including providing distributed control of the back-end
debugger, sending to the debug administrator an instruction to register the dynamic
breakpoint, and sending to the back-end debugger a command to establish the dynamic
breakpoint; establishing the dynamic breakpoint; registering the requesting debug
client's dynamic breakpoint; and returning, by the debug
server to the debug clients in response to the application-level messages routed to the back-end debugger,
client-specific debug results.