Troubleshooting an Application
Despite thorough testing, an application can experience operational problems. These problems can result from faulty coding or they can be environmental in origin (e.g., stemming from the interaction of the application and the operating system). In either case, the approach to troubleshooting an application uses the same three-step process:
1. Reproducing the Situation
A fundamental rule of problem-solving in any software system is that if you are unable to reproduce the problem, you are unable to solve it.
Some problems can be difficult to reproduce, but the following guidelines make reproduction simpler.
If a problem arises while you are running an application, make note of what was being done with the application at the time.
When you are ready to attempt to reproduce a problem, make the following preparations:
Back up all files.
Reproduce the external environment as closely as possible. If other processes were running, make sure they run during your test.
Try to carry out the same steps that you were performing when the error occurred. Remember to back up your files before each attempt to reproduce the error. Some problems are data dependent, and using the correct initial data can be crucial to successfully reproducing the error.
If you cannot cause the error to occur, the problem could also depend on commands executed earlier in the session. Try again, making sure to run through exactly the same steps that you did when the error first occurred.
During this phase, it is very important to make careful notes of all your actions; you want to be able to repeat, again and again, the exact situation that caused the problem. You should not be concerned at this point with eliminating unnecessary steps; you can deal with that question when you try to isolate the cause of the problem.
2. Isolating the Cause
Once a problem is reproducible, you can attempt to isolate its cause. Isolation involves eliminating potential causes until you have pinpointed exactly what causes the error to occur.
The following strategies can be used to determine the cause of an environmental problem:
Run the application on another computer system. This process helps to determine if hardware problems are involved.
Remove external processes from your system. If the problem does not recur, it could have been a result of system stresses created by these external processes, or the external processes could be interfering with your application.
Reduce memory requirements by changing various options in the configuration files (e.g., sort buffers, maximum forms, etc. – see Configuration Tuning topics).
If possible, try changing your operating system configuration (e.g., system limits on resources, such as the number of files, number of locks, and so on) before running your application.
Try these strategies one at a time. If your problem disappears, you may have discovered its cause.
The object of the isolation process is to pinpoint the problem. For example, do not worry if reducing memory usage affects performance. If memory usage is causing the problem, at least you can trade some performance for correct operation.
3. Solving the Problem
Once you have isolated the problem, proceed with solving it.
If you have a hardware problem, components of your computer system can be repaired or replaced. Problems stemming from the operation of external processes can be prevented by ensuring that the external processes do not run simultaneously with the application. If the problem stems from memory usage, changes to the configuration files or memory allocation could be required.