Handy bug tracking using Error.Backtrace().Join("\n")

When debugging code catch errors and trace their source using the Error.Backtrace property.

Public Sub Form_Load()

' Your Code Here...

Catch
  Message.Error(Error.Text & "\nBacktrace:\n" & Error.Backtrace.Join("\n"))
End

Or...
Public Sub Form_Load()

' Your Code Here...

Catch
  Debug Error.Text & "\nBacktrace:\n" & Error.Backtrace.Join("\n")
End

This approach could be further improved by displaying the error in a dialog only for a debug compile - as demonstrated here, while the error is written to a log file for a release compile. The distinction between debug compilation and release compilation could be realized by a global static constant.

Public $bDEBUG As Boolean = False
Public $sPath As String = "~/gambas-log.txt"

Public Sub Form_Load()

' Your Code Here...

Catch
  Dim sError As String = Error.Text & "\nBacktrace:\n" & Error.Backtrace.Join("\n")
  If $bDEBUG Then
    Message.Error(sError)
  Else
    If LogToFile($sPath, "Error", "My-current-component", sError) = False Then
      ' Somenting really bad happened!
    Endif
  Endif
End


Public Function LogToFile(sPath As String, sCategory As String, sTopic As String, sMessage As String) As Boolean
  Dim hFile As File

  If Exist(sPath) Then
    hFile = Open sPath For Write Append
  Else
    hFile = Open sPath For Write Create
  Endif

  Print #hFile, Now; " | "; sCategory; " | "; sTopic; " | "; Replace$(Replace$(sMessage, "\n", "; "), ":;", ":")
  Close #hFile

  Return True

Catch
  Return False
End