Chapters

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

System Software

H.D.Phaneendra
Assistant Professor
Department of CS&E
The National Institute of Engineering
Mysore – 570023
hdphanee@yahoo.com
Other System Software

Text Editors
Interactive Debugging Systems
Studied
Assemblers , Loaders and Linkers

Macro Processors, Compilers, Lex and Yacc


A Debugger
A debugger is a computer program that is used
to test and debug other programs.
When the program crashes, the debugger
shows the position in the original code if it is a
source-level debugger or symbolic
debugger, commonly seen in integrated
development environments(IDEs)
•Typically, debuggers also offer more sophisticated
functions such as running a program in the following
manner
•step by step (single-stepping)
•stopping (breaking) (pausing the program to
examine the current state) at some kind of event by
means of breakpoint, and tracking the values of
some variables.
•Some debuggers have the ability to modify the state
of the program while it is running, rather than merely
to observe it.
Interactive Debugging Systems
An interactive debugging system provides
programmers with facilities that aid in
testing and debugging of programs
interactively
Many such systems are available during
these days
Our discussion is broad in scope, giving the
overview of interactive debugging systems –
not specific to any particular existing system
What We Discuss ?

Introducing important functions and


capabilities of IDS
Relationship of IDS to other parts of the
system
The nature of the user interface for IDS
Debugging Functions and Capabilities
One important requirement of any IDS is the
observation and control of the flow of program
execution
Setting break points – execution is suspended, use
debugging commands to analyze the progress of the
program, résumé execution of the program
Setting some conditional expressions, evaluated
during the debugging session, program execution is
suspended, when conditions are met, analysis is
made, later execution is resumed
A Debugging system should also provide
functions such as tracing and traceback
Tracing can be used to track the flow of
execution logic and data modifications
The control flow can be traced at different
levels of detail – procedure, branch,
individual instruction, and so on…
Traceback can show the path by which the
current statement in the program was
reached
It can also show which statements have
modified a given variable or parameter
The statements are displayed rather than
as hexadecimal displacements
Program-Display capabilities
A debugger should have good program-display capabilities
Program being debugged should be displayed completely
with statement numbers
The program may be displayed as originally written or
With macro expansion
Keeping track of any changes made to the programs during
the debugging session
Support for symbolically displaying or modifying the contents
of any of the variables and constants in the program
Resume execution – after these changes
How functions are provided
To provide these functions, a debugger should
consider the language in which the program being
debugged is written
A single debugger – many programming
languages – language independent
The debugger - a specific programming language
– language dependent
The debugger must be sensitive to the specific
language being debugged
The context being used has many different effects
on the debugging interaction
The statements are different depending on the
language
Cobol - MOVE 6.5 TO X
Fortran - X = 6.5
C - X = 6.5
Examples of assignment statements
Similarly…

The condition that X be unequal to Z may be


expressed as
Cobol - IF X NOT EQUAL TO Z
Fortran - IF ( X.NE.Z)
C - IF ( X <> Z)

Similar differences exists with respect to the


form of statement labels, keywords and so on…
The notation used to specify certain debugging
functions varies according to the language of the
program being debugged
Sometimes the language translator itself has
debugger interface modules that can respond to
the request for debugging by the user
The source code may be displayed by the
debugger in the standard form or as specified by
the user or translator
What about optimized code ?
It is also important that a debugging system be able to deal
with optimized code
Many optimizations like
- invariant expressions can be removed from loops
- separate loops can be combined into a single loop
- redundant expression may be eliminated
- elimination of unnecessary branch instructions

Leads to rearrangement of segments of code in the program


All these optimizations create problems for the debugger,
and should be handled carefully
Relationship with Other Parts of
the System
The important requirement for an interactive debugger
is that it always be available
Must appear as part of the run-time environment and
an integral part of the system
When an error is discovered, immediate debugging
must be possible
The debugger must communicate and cooperate with
other operating system components such as interactive
subsystems
Debugging is more important at production time
than it is at application-development time
When an application fails during a production run,
work dependent on that application stops
The debugger must also exist in a way that is
consistent with the security and integrity
components of the system
The debugger must coordinate its activities with
those of existing and future language compilers
and interpreters
User-Interface Criteria
Debugging systems should be simple in its
organization and familiar in its language, closely
reflect common user tasks
The simple organization contribute greatly to ease
of training and ease of use
The user interaction should make use of full-screen
displays and windowing-systems as much as
possible
With menus and full-screen editors, the user has far less
information to enter and remember

There should be complete functional equivalence between


commands and menus – user where unable to use full-screen
IDSs may use commands

The command language should have a clear, logical and


simple syntax, command formats should be as flexible as
possible

Any good IDSs should have an on-line HELP facility. HELP


should be accessible from any state of the debugging session
Some Examples
CodeView
Eclipse
GNU Debugger
JAVA Platform Debugger
IBM Rational Purify
TURBO Debugger
Visual Studio Debugger
Micro Soft DEBUG - A Debugger for Assembly
Language Programs
TURBO C IDE with Debugger
Editing, Compiling and Running C Programs
Setting Break Points and Observing
Setting variable values
Thanks

You might also like