1. A method of collaborative software debugging in a distributed system, the distributed system comprising a debug server, a plurality of debug clients, and a data communications network, the debug server coupled for data communications to the plurality of debug clients through the data communications network, the debug server comprising a debug administrator, a message router, a back-end debugger, and a debuggee, the method comprising: receiving, by the debug server from the debug clients asynchronously during a debug session of the debuggee, a plurality of application-level messages, including receiving, from a requesting debug client, a request to establish a variable-specific message for a particular variable, the variable-specific message comprising content to be displayed in association with the particular variable in a debug client's client-specific graphical user interface (‘GUI’) upon evaluation of the particular variable; routing, by the message router in accordance with an application-level message passing protocol, the application-level messages among the debug clients, the debug administrator, and the back-end debugger, thereby providing distributed control of the back-end debugger to the debug clients with application-level messages routed to the back-end debugger, including establishing the variable-specific message for the particular variable; 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, including: responsive to each request by a variable evaluating debug client to evaluate a variable and if a variable-specific message has been established for the variable to be evaluated, returning, by the message router to the variable evaluating debug client, the content of the variable-specific message to be displayed in association with the variable in the variable evaluating debug client's client-specific GUI along with the evaluation of the variable.