This section of the archives stores flipcode's complete Developer Toolbox collection, featuring a variety of mini-articles and source code contributions from our readers.

| Remote Debugging Online Applications Submitted by

I think most of us are aware of the fact that debugging a running online application is a pretty difficult task if it was not identified in the beginning. Designing the application in such a manner as to centralize all kinds of debugging output is the key in this scenario. This idea was implemented in my current project so i thought it is worth to share here.
My current application required 3 kinds of output targets.
1. Console (Important but not usable)
2. Socket (Provides real-time feedback)
3. File Stream (Good for reviewing the problem)
My application was a sort of a Proxy server that has to run as a Daemon Service and provides facilities to connected users, so after launching the application and closing the Console i was unaware what kind of errors are being generated by my application so i required a mechanism through which i can connect on my Server and can check the current activity of the debugging. Also if someone came to me that at a particular instance of time the application didnt behave as required then i need to review the previous generated debugged output, for that i need a persistent file stream.
So in this case what i did was basically very simple, i centralized all my debugging output through a single class QDebugOut (The source is in Java but i think we can get the general idea)

    class QDebugOut
    {
       public static void LogIt(String str)
       {
          LogItConsole(str);
          LogItConnection(str);
          LogItStream(str);
       }

       private static void LogItConsole(String str)
       {
           System.out.println(str);
       }

       private static void LogItConnection(String str)
       {
          // Go through all the connections

          //     Write the given String(str)
          //     Flush the stream
          // Loop
       }

       private static void LogItStream(String str)
       {
          // Write it in a File Stream
       }
    }

So now that i have centralized all my debugging output i can do something like this in my main code

    public class MainClass
    {
        public void SomeFunction()
        {
            try
            {
                // A line that generates an Exception
            }
            catch(Exception e)
            {
                 QDebugOut.LogIt("Error has occured"+e);
            }
        }
    }

So now i can see every generated Debugging error wherever / whenever it suits me.
Regards
-Saad

The zip file viewer built into the Developer Toolbox made use of the zlib library, as well as the zlibdll source additions.

Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.