Debugging

   The debugger is in the bin\win32 or bin\dos directories (the GDB.EXE 
   file), for the Windows and DOS versions respectively.  It usually comes 
   already installed in most Linux distros.

   (Note: all commands should be typed without quotes and then [return] 
   must be pressed.)

   * Compile the source code for your program in debug mode
      * use the -g command-line option to add debugging support, e.g. fbc 
        -g myapp.bas.

   * Load your compiled program in GDB 
      * For example, in Windows/DOS: gdb myapp.exe

   * Set any arguments you want to send to your application
      * For example: set args arg1 arg2 argn.
      * You can also run GDB and pass the arguments directly to the 
        application been debugged: gdb --args myapp.exe arg1 arg2 arg3.

   * Ensure GDB can see your program's source code directory
      * If the executable isn't in the same directory of the source files 
        where it was compiled, type: dir path/to/my/application/sources.

   * Set a breakpoint in your program
      * Place a breakpoint in the first line using: b main.
      * To place a breakpoint in a function called func use: b FUNC.
      * Note: fbc exports variable/function names to UPPERCASE.  GDB is 
        case sensitive by default, but you can use the set language pascal 
        command to change GDB to case-insensitive mode.

   * Use GDB shortcuts to run your code or to step through it
      * Type r to start running the application.
      * Type n to step to the next line, stepping over function calls.
      * Keep pressing [return] to step forward to the next line.
      * Type s to step into function calls.
      * As above, keep pressing [return] to step through.
      * Type c to continue execution until the next breakpoint.

   * Use GDB shortcuts to inspect variables
      * Use print VAR_NAME to show the contents of the variable called 
        var_name.
         * GDB supports pointer/pointer field dereferencing, indexing and 
           arithmetics too, so print *MYPOINTER will also work.
         * (note: undeclared variables or the ones with suffixes like % & 
           ! # $ can't be printed).
      * Use disp VAR_NAME to display the contents of a variable called 
        var_name.
      * Use watch VAR_NAME to stop each time a variable called var_name is 
        changed.

   * Additional commands:
      * Use r again to restart the application when it finishes.
      * Type q to quit.
      * Type help to see a list of commands, there are many others.

