– Debugging is more of like a methodical process that involves locating and reducing the number of defects, bugs and errors in a software system or application or in an electronic hardware piece.
– Debugging makes the software behave in a desired manner.
– The degree of coupling of the sub–systems decides the degree of the ease of the debugging process.
– If the sub–systems of the software have been coupled loosely then it would be easy to carry out the debugging process.
– In other situations i.e., when the sub – systems have been tightly coupled the debugging process becomes difficult. – Bugs or defects in one sub–system may tend to introduce bugs in the other one.
There are a number of aspects of the debugging process few of which have been listed below:
1. Interactive debugging
2. Control flow
3. Integration testing
4. Log files
5. Monitoring system and applications
7. Memory Dumps
8. Statistical process controls.
Special tactics are designed for improvement of the detection process and simplification of the changes. To keep a track on this process complexity and errors, a number of debugging techniques are adopted in combination with other methodologies for a number of purposes such as:
1. For detecting anomalies
2. Assessing the impact of the bugs
3. Scheduling the software patches
4. Scheduling full updates for a system
– An impact assessment is needed to be carried out so that it can be determined if any changes are to be made for removing the bugs and anomalies or discrepancies and also whether they would be cost effective for the system or not. – It is also determined that whether a new release might render making the changes as an unnecessary task.
– Not all the issues related to a software system or application are life critical.
– There might be some situations where a change introduced for covering an error might upset the users more than what the error might do.
– These kind of situations whether the decisions are based up on the acceptability of the bugs and anomalies can prevent the developers from following a culture of the zero defects which is quit mandatory to follow.
– That will follow up with a false situation where the people will deny the existence of the errors so that the result could be pictured as with zero defects.
– If you consider collateral issues (like cost vs. benefit impact assessment), you will see that there is a requirement of much advance debugging techniques that will help in determination of the frequency of the occurrence of bugs and anomalies so that their impact on the overall system could be assessed in a much better way.
– Debugging ranges over a wide range of time from fixing simple bugs requiring an hour to carry out lengthy and tiresome tasks requiring days.
– These tasks may involve tasks such as data collection, analyzing it and scheduling the software updates.
– The debugging skills of a tester or programmer also play a great role in the whole debugging process.
– Here, it should be mentioned that the difficulty to debug software also varies with which programming language is being used and what tools are available.
– Debuggers are one of the most effective tools that are used for finding the defects as they help monitor the program’s execution, restart it if required, set break points and so on.
– The person who carries out the debugging process is also referred to as the debugger.
– Debugging process gets easier in the programs which are developed with high level programming languages such as java since it has got exception handling which makes it easier to spot the source of error.