Advanced software debugging techniques

Abstract

Software debugging (better known as “debugging”) is one of the most complex tasks in the software development process, especially when it comes to industrial software products. However, it is an essential process that must be performed in almost all software developments and its objective is the detection and correction of errors (errors of all kinds: execution, operation, performance, etc.).
Errors can be detected through testing techniques (based on test cases), through formal verification techniques, through the inclusion of assertions in the code, etc. In any of these cases, it is essential to have powerful tools that facilitate the detection of errors and, especially, their correction.
On the other hand, in the field of web applications for the Internet, it is also particularly important to use techniques for debugging websites, so as to ensure properties such as accessibility, navigability, efficiency, maintainability, correctness (absence of errors), portability and ease of use.

In the research group we have developed different advanced debugging techniques based on “automatic fragmentation” or “algorithmic debugging”. While the former allow to reduce the scope of error search, the latter are very useful to systematically locate the location of an error based on the programmer’s knowledge. We also work with “profiling” techniques, which allow us to analyze the resource consumption of each unit of the application, so that the “bottlenecks” of the system can be located and avoided, thus improving the overall performance of the developed system. Finally, we have web page filtering tools that allow us to show only the aspects related to a certain criterion, which can be essential when analyzing the information provided by the web site, debugging the content, etc.

Scientific officer

Vidal Oriola, Germán Francisco

Stakeholders

Applications

  • The main application of our techniques is automatic or semi-automatic software debugging. The techniques can be adapted to different programming languages or development methodologies.
  • On the other hand, web filtering tools allow, in a fully automatic way, to transform a web site so that it only displays relevant information with respect to certain criteria. This utility could also be considered as a facility for users browsing a website, allowing them to focus their attention on certain aspects and avoiding others.

Technical advantages

The main technical advantages of our debugging methods is that they allow to reduce the time of detection, localization and correction of software errors, something crucial in the development of programs. In most cases, these processes are carried out manually or with simple tools and totally guided by the programmer.

Benefits it provides

  • The main benefits of the use of advanced debugging techniques are those derived from the reduction in software development times (in which code debugging has a considerable weight).
  • On the other hand, there are less tangible benefits derived from the improvement in the quality of the software produced, the possibility of including quality certifications, etc.

Relevant experience

Since its creation, the group has been oriented to the development of techniques related to the topics discussed here, which is supported by the number and quality of the publications of the team members, as well as by the R+D+I projects in which they have participated.