The Debugserver project is one which attempts to make the process of development and the eventual debugging of an application as painless as possible. It provides a facility to remotely log debugging information ready to be analysed using a web broswer. It will also provide remote administration so that old debugging information can be deleted to reserve disk space and maintain performance of the system.

The actual server is coded in Java. The language was chosen for a number of reasons. The main reason is that using sockets and threads is very easy in Java compared to C/C++. Another, more selfish reason is that I wanted to brush up on my Java programming skills.
The server provides/will provide the following connections:
  • DebugClient -
This is for the connection between the server and the application being debugged. This connection will be made using small one of a selection of APIs coded for different languages. Currently, only C++ and Java will be implemented as these are the only languages I know. Development of other clients is welcome.
  • HTTP -
This is to provide the facility to analyse logged debugging information remotely using a web browser. The structure of the virtual pages will be much like a normal website with a homepage listing all of the logged clients. The viewer will be able to select a specific range of logs (either by order or time). Later in the development, the viewer will be able to search for keywords, etc.
  • Telnet -
This will allow the information to be viewed using a text based menu system. It will provide much the same functionality as the HTTP server. This facility will also provide a way for other viewing clients to communicate with the server without having a separate connection protocol for each; the client would emulate a user.
  • Admin -
The final connection will allow a user to carry out administration tasks. These could include things like allowing/disallowing specific clients, deleting information from specific clients, etc. This will be password protected.


Current Status

Currently, the project is on release 0.2. In this release, there is the server, two client APIs and a simple command-line client implementation. The server logs the information to file where it can be viewed via the HTTP implementation.

The two clients provide an easy to use connection to the server. At the moment there exist two client APIs; one for Java and one for C++.



The next job to be completed will be the viewer implementation. This will include specifying the connection protocol and writing server and client sides.

Another one is to introduce connection controls into the server. This includes selecting address-ranges to block/allow, an account based control (admin must set up an account with password before client can connect), automatic house-keeping (deleting expired information), etc.

The admin connection protocol also needs to be completed and implemented. This could be built upon the viewer protocol.