I've had a couple of times in the time I've working, moments when I get an error ocurring in just 1 computer and it often takes me hours or days to figure out because it is (or at least seems) an isolated incident as it is not being presented in any other instance of whatever I'm checking. How do you guys deal with this? I've often had to just change the computer per se (like formatting, or stuff like that) because I simply cannot replicat the issue.
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
You have to try to isolate what's different about that machine/environment to every other machine/environment where your application works.
That will involve checking the state of your application by adding diagnostics, checking the state of the machine - which may involve remote logging or even physical access, and checking what the user is doing at every step of the way.
I've had many problems that only repeated for one user or on one machine and it was only by understanding what they were doing and how they were doing it were we able to resolve things.
The same way as a bug that happens on multiple machines, but not my own. Add diagnostic code and beef up the error handling as much as possible in the locations you may suspect. How about adding a diagnostic logging feature that you can turn on to write to a log file on the machine with the problem?
If I have physical access to the machine, I debug it by whatever means necessary because there's obviously some kind of flaw that my app should be handling better than it is (if the app is bailing with intelligent logging and a good message then I should have a rough idea of what's wrong the environment already). I've had to do this via just checking around the system logs, active debugging, and special debug builds with additional logging built in, but it's almost always worth it in what it exposes.
If I don't have physical access to the machine there are a few things I'll always try to have the user check (Event log, any logs in my app, etc.), and usually a few things specific to the app, like registry settings, DLL registration, whatever. I don't get too far beyond that, because the risks of deep-diving on a probably-compromised machine remotely are too scary to contemplate.