针对 Python 的远程调试：qdb
- The client
- The tracer
- The server
The client is the user's interface to the debugger. All communication here is through a websocket connected to the server. This client could be any type of application. qdb provides a terminal client and emacs mode for this.
The tracer is the main debugging process. This is the actual code that the user wishes to debug. Communication here is through a socket sending pickle'd dictionaries representing only the valid messages sent to the server from the client. A single tracer may have multiple clients connected to it.
The server is the main routing station for messages between the clients and the tracer. The server is responsible for validating that the messages from the clients are well formed and routing them to the tracer. A single server may manage multiple tracers, so it is responsible for making sure that connections are routed to the proper place. The server can clean up tracer processes whose clients have become inactive if the server manager decides. The server may also impose authentication rules to allow or disallow some connections.