Nah, just us a hierarchical search to narrow down the region of concern.
Display a message box to display the progress of your process, at each major stage in your app; usually 10 or so message boxes will indicate what major part of the program is at fault. Hopefully it will be the first part. After you find out the faulty section, run the same procedure on that section, and so on until you detect the cause.
Does your 20,000 liner have a logger? It might be a good idea to have your program tell you what it is doing and what happened in a log file; Ian created a log function library in Matrix1. Implement it and create an option to log the progress of the app so in future if a customer has trouble running your software, this log file will 9 times out of 10 report the issue.