Steve,
There are a few possible solutions to this.
One, I am writing an article about right now. It involves writing a Loader. This is a simple VI that loads and runs your main program, so that it can remain as a VI. If this is a viable solution for you (your VIs remain as VIs), then it is probably a great solution, as you won't have to worry about why your VI runs differently as an executable than in development.
The second is a lot more involved. You need to troubleshoot this error. First, you should already have in place some good error handling. If you don't, get it. Once you have it, or if you already do, you need to determine about where the error is coming from, and start putting in some troubleshooting. I always like to create a singl
e Global Variable (this to me is the ONLY good use for a global) with all sorts of indicators to act as a runtime probe (since you can't probe a built application.) You just write values to various controls as you need them, when you need them, and this allows you to view those values. Since this is designed primarily to view data in reentrant VIs, you will have to create a viewer for your built application. Simply create a VI that loads when you run your app that displays all of the global values.
Those are the only suggestions I can offer for now. Without knowing the nature of the error, etc, I can't give you any further advice.