TL;DR: A particular system called EFFIGY which provides symbolic execution for program testing and debugging is described, which interpretively executes programs written in a simple PL/I style programming language.
Abstract: This paper describes the symbolic execution of programs. Instead of supplying the normal inputs to a program (e.g. numbers) one supplies symbols representing arbitrary values. The execution proceeds as in a normal execution except that values may be symbolic formulas over the input symbols. The difficult, yet interesting issues arise during the symbolic execution of conditional branch type statements. A particular system called EFFIGY which provides symbolic execution for program testing and debugging is also described. It interpretively executes programs written in a simple PL/I style programming language. It includes many standard debugging features, the ability to manage and to prove things about symbolic expressions, a simple program testing manager, and a program verifier. A brief discussion of the relationship between symbolic execution and program proving is also included.
TL;DR: DAVE, a system for analysing Fortran programs, is capable of detecting the symptoms of a wide variety of errors In programs, as well as assuring the absence of these errors.
Abstract: This paper describes DAVE, a system for analysing Fortran programs. DAVE is capable of detecting the symptoms of a wide variety of errors In programs, as well as assuring the absence of these errors. In addition, DAVE exposes and documents subtle data relations and flows within programs. The central analytic procedure used is a depth first search. DAVE itself is written in Fortran. Its implementation at the University of Colorado and some early experience are described.
TL;DR: The results of human factor experiments in programming have led to a cognitive model of programmer behavior which distinguishes between the hierarchically structured, meaningfully acquired semantic knowledge and the rotely memorized syntactic knowledge.
Abstract: Although greater emphasis is placed on the task of computer program composition, debugging and modification often consume more time and expense in production environments. Debugging is the task of locating syntactic and semantic errors in programs and correcting these errors. Modification is the change of a working program to perform alternate tasks.The factors and techniques which facilitate debugging and modification are poorly understood, but are subject to experimental investigation. Controlled experiments can be performed by presenting two groups of subjects with two forms of a program or different programming aids and requiring the same task. For example, in one study we presented an 81 line FORTRAN program containing three bugs to distinct groups of subjects. One of the groups received a detailed flowchart, but our results indicated that this aid did not facilitate the debugging procedure. Similar negative results were obtained for a modification task.In other experiments, comments and meaningful v...
TL;DR: Hands-on programming begins in Chapter 1--each chapter is based on one or more example programs applicable to real-life business settings, based on the concepts of structured programming.
Abstract: From the Publisher:
This is for the person who wants to learn what COBOL is, what programming is, and how to use COBOL in typical business data processing applications Assumes no previous background in programming Hands-on programming begins in Chapter 1--each chapter is based on one or more example programs applicable to real-life business settings Treatment is based on the concepts of structured programming--only a few logical control structures are used throughout the book Emphasizes a clear program style for ease of reading and debugging All programs have been tested and run, and computer output is displayed in each case
TL;DR: A many-state Markov model provides estimates and closed form predictions of the availability and of the most probable number of errors that will have been corrected at a given time in the operation of a large software package.
Abstract: A many-state Markov model has been developed for the purpose of providing performance criteria for computer software. The model provides estimates and closed form predictions of the availability and of the most probable number of errors that will have been corrected at a given time in the operation of a large software package. The model is based on constant rates for error-occurrence ? and error cortection ?. An interesting application case is when ? and ? are functions of the state of debugging achieved. This case is discussed and solved numerically. Extensions and modifications of the basic model are briefly discussed.
TL;DR: An estimate for the expected number of bugs in a program module could be one aid in solving the problem of determining the amount of time for debugging of programs.
Abstract: Determining the amount of time to allot for debugging of programs is of prime importance in producing reliable software on schedule. Rn estimate for the expected number of bugs in a program module could be one aid irsolving this problem. In this paper we present a re I ationship +o give such an estimate and offer sGrne pre)iminary verification of its accuracy.
TL;DR: In this paper, the authors consider various factors affecting system em organization for speech understanding research and present the structure of the Hearay system based on a set of cooperating, independent processes using the hypothesize-and-test paradigm.
Abstract: This paper considers various factors affecting system em organization for speech understanding research. The structure of the Hearsay system based on a set of cooperating, independent processes using the hypothesize-and-test paradigm is presented. Design considerations for the effective use of multiprocessor and network achitectures in speech understanding systems ems are presented: control of processes, interprocess communication and data sharing, resource allocation, and debugging are discussed.1
TL;DR: In this article, an approach for debugging a utility program without material increase in the memory capacity required is presented, using only the input-output devices such as the keyboard, the console, the display, the MC reader which normally equip the computer.
Abstract: Apparatus is provided for debugging a utility program without material increase in the memory capacity required Such apparatus performs the debugging functions by using only the input-output devices as the keyboard, the console, the display, the MC reader which normally equip the computer Actuation of a correction key activates the debugging program and interrupts operation of the utility program The debugging program may be stored in a reserved portion of a ROM, or transferred into a predetermined storage area from magnetic card storage This area is predetermined not to hold information significant to resumption of the utility program under test A search is then made of the utility program, eg, by addresses of the individual instructions, for the erroneous instruction Upon discovery thereof, a correct instruction is keyed in directly from the keyboard to replace the erroneous instruction The debugging program records this correct instruction at the approriate addressed location in memory
TL;DR: The prevention of system design errors is investigated, the corner-stone of all software systems, the sequential processes analysed in detail and programming is considered from the point of view of reliability.
Abstract: The reliability of an extensive software system is essentially determined during the design stage. If the system design is poor, that is, without understandable structure, then in the majority of cases it is not possible to provide a highly reliable product by later corrections. If, on the other hand, more effort is put into the elimination of errors during the design phase, then considerable savings will be made during later debugging. In this chapter, the prevention of system design errors is investigated. In the first section the corner-stone of all software systems, the sequential processes analysed in detail. When a number of processes run quasi-simultaneously, a number of new problems and sources for error appear; these are dealt with in the subsequent section. In the final section of the chapter, programming is considered from the point of view of reliability.
TL;DR: A unified theory of planning and debugging is explored by designing a problem solving program called PATN, which uses an augmented transition network (ATN) to represent a broad range of planning techniques, including identification, decomposition, and reformulation.
Abstract: : A unified theory of planning and debugging is explored by designing a problem solving program called PATN. PATN uses an augmented transition network (ATN) to represent a broad range of planning techniques, including identification, decomposition, and reformulation. (The ATN is a simple yet powerful formalism which has been effectively utilized in computational linguistics). PATN's plans may manifest 'rational bugs', which result from heuristically justifiable but incorrect arc transitions in the planning ATN. This aspect of the theory is developed by designing a complementary debugging module called DAPR, which would diagnose and repair the errors in PATN's annotated plans. The investigation is incomplete: PATN has not yet been implemented. But sufficient detail is presented to provide a theoretical framework for reconceptualizing Sussman's HACKER research. Since a detailed study of planning and debugging techniques is a prerequisite for complete fulfillment of Dijkstra's objectives of program reliability, readability, portability, and so on, the theory is called, 'Structured Planning and Debugging', to emphasize its potential role in this enterprise.
TL;DR: A new facility in the SNOBOL4 programming language is described that provides the capability to associate the execution of a programmer‐defined function with the act of assigning a variable a value or retrieving the value of a variable.
Abstract: This paper describes a new facility in the SNOBOL4 programming language that provides the capability to associate the execution of a programmer-defined function with the act of assigning a variable a value or retrieving the value of a variable. The facility, called programmer-defined variable association, subsumes the existing built-in associations used for input, output and value tracing and provides, at the source-language level, the protection and datatype coercion mechanisms used in keywords. Several applications are described that illustrate the usefulness of this addition to the language. The facility is especially useful for program monitoring and debugging. The implementation of this facility and the effect of implementation techniques on programming language design are also discussed.
TL;DR: The architecture of a multiprocessor with a fault tolerant operating mode is described and analyzed and a bus level voter is used to satisfy the stringent design constraints of software transparency, modularity, use of off-the-shelf components, and dynamic trading of performance for reliability.
Abstract: : The architecture of a multiprocessor with a fault tolerant operating mode is described and analyzed. A bus level voter is used to satisfy the stringent design constraints of software transparency (programs form non-redundant versions will execute in a fault tolerant manner without modification), modularity, use of off-the-shelf components, and dynamic trading of performance for reliability. Bus level voting also allows handling of diverse system components (processors, memories, floppy disks, teletypes, etc.) in a uniform way. Models of performance degradation (20% slower than non-redundant on instruction execution rate, 50% slower on expected disk latency) and reliability improvement (both permanent and transient failures) are presented as well as experience in redundant system debugging, system initialization and switchover software, and initial performance measurements. The system, which is nearing completion, will be used to measure the occurrence of transient failures and to test fault tolerant bus protocols. (Author)
TL;DR: The assertion language described in this paper is generalized in the sense that it permits the programmer to refer to not only current events, but also past events, and is open-ended by allowing a user to define checking routines of his own.
Abstract: The motivation behind the work in debugging languages is to provide the programmer with primitives so that he may search for events during execution, which are suspected to be anomalous. Events that may be specified by most existing debugging languages are very elementary. Also, there are no facilities to combine them into more complex events. Even though he can selectively monitor the history of execution, the programmer usually has to explore a vast mass of information in order to check the absence or presence of anomalous conditions.The philosophy of the assertion approach is to provide facilities with which the programmer may specify conditions, which the system can check at execution time. Only violations are reported. By suppressing irrelevant information, it makes it a lot easier to detect anomalies.The assertion language described in this paper is generalized in the sense that it permits the programmer to refer to not only current events, but also past events. Without such generalization, it is not possible to specify many interesting properties of programs. In addition, the language is open-ended by allowing a user to define checking routines of his own. Relevant aspects of the language and examples are given.
TL;DR: In this paper, a grammar of plans is developed from a taxonomy of basic planning techniques, which serve as the basis for the design of a new kind of interactive programming environment (SPADE), in which programs are generated by explicitly articulating planning decisions.
Abstract: : A grammar of plans is developed from a taxonomy of basic planning techniques. This grammar serves as the basis for the design of a new kind of interactive programming environment (SPADE), in which programs are generated by explicitly articulating planning decisions. The utility of this approach to program definition is that a record of these decisions, called the plan derivation, provides guidance for subsequent modification or debugging of the program. Moreover, this grammatical approach to planning allows the development of a taxonomy of bugs, as particular kinds of errors in applying the planning grammar. Following a linguistic analogy, five types of planning bugs are characterized: syntactic, semantic, pragmatic, circumlocutions, and slips of the tongue. The plan derivation can be accessed during subsequent debugging, to aid in diagnosing the underlying cause of the erroneous code. Repair is accomplished via replanning, in which a substructure of the derivation is replaced. A debugging assistant for the SPADE environment (RAID) is designed based on this theory. The enterprise embodies Dijkstra's philosophy of programming in a structured fashion, but represents a more detailed study of planning and debugging techniques than has previously been attempted. (Author)
TL;DR: A grammar of plans is developed from a taxonomy of basic planning techniques that serves as the basis for the design of a new kind of interactive programming environment (SPADE), in which programs are generated by explicitly articulating planning decisions.
Abstract: Abstract : A grammar of plans is developed from a taxonomy of basic planning techniques. This grammar serves as the basis for the design of a new kind of interactive programming environment (SPADE), in which programs are generated by explicitly articulating planning decisions. The utility of this approach to program definition is that a record of these decisions, called the plan derivation, provides guidance for subsequent modification or debugging of the program. Moreover, this grammatical approach to planning allows the development of a taxonomy of bugs, as particular kinds of errors in applying the planning grammar. Following a linguistic analogy, five types of planning bugs are characterized: syntactic, semantic, pragmatic, circumlocutions, and slips of the tongue. The plan derivation can be accessed during subsequent debugging, to aid in diagnosing the underlying cause of the erroneous code. Repair is accomplished via replanning, in which a substructure of the derivation is replaced. A debugging assistant for the SPADE environment (RAID) is designed based on this theory. The enterprise embodies Dijkstra's philosophy of programming in a structured fashion, but represents a more detailed study of planning and debugging techniques than has previously been attempted. (Author)
TL;DR: The following two chapters deal with testing and debugging as being automatic computer systems that are able to recognise an error and take appropriate action.
Abstract: In the preceding chapters testing and debugging were treated as more or less manual processes. The following two chapters deal with these processes as being automatic. Computer systems that are able to recognise an error and take appropriate action are known in the literature as fault-tolerant systems. In recent years a new branch of computer science has been established to deal with the problems associated with fault-tolerant computing (Avizienis, 1978).
TL;DR: In this paper, a trace information without giving any disturbance to the central processor with every step by controlling the debugger with a microprogram containing a debugger exclusive field was obtained without causing any disturbance.
Abstract: PURPOSE: To obtain a trace information without giving any disturbance to the central processor with every step by controlling the debugger with a microprogram containing a debugger exclusive field. COPYRIGHT: (C)1978,JPO&Japio
TL;DR: This paper describes a program called ASSIST-V, an extended version of a student-oriented assembler/interpreter, designed to provide students and other researchers with an environment in which they may write and analyze operating systems for the IBM 360/370 series of machines.
Abstract: This paper describes a program called ASSIST-V which is designed to provide students and other researchers with an environment in which they may write and analyze operating systems for the IBM 360/370 series of machines. ASSIST-V is an extended version of a student-oriented assembler/interpreter called ASSIST. A user of ASSIST-V is presented with a machine which simulates the full set of S/360 machine instructions (including privileged instructions): the standard 360/370 interrupt structure, I/0 channels, and I/0 devices. Since the machine environment is simulated, ASSIST-V can provide debugging and statistics-gathering features not available on an actual “bare” machine.
TL;DR: This work believes that the divergent language requirements arise from a failure to separate the communication level of the language processor from the implementation level, and proposes a hierarchial language structure which accomplishes this separation.
TL;DR: The proposed approach greatly reduces the control memory requirements, improves the ROM encoding efficiency and facilitates microprogram debugging and fault detection capabilities in the ROM's.
Abstract: Efficient encoding schemes for partitioning the control Read-Only Memory (ROM) of a microprogrammed digital controller into the composition of smaller ROM matrices are given in this paper. Based on these partition methods, we propose an economical way of implementing the hybrid redundant structure in a microprogrammed control for enhancing fault-tolerant control operations. The approach greatly reduces the control memory requirements, improves the ROM encoding efficiency and facilitates microprogram debugging and fault detection capabilities in the ROM's.
TL;DR: An assembler-based operating system can provide debugging features often found only on more advanced systems, including an interactive inspection program, an error-trap facility, and a real time, hard copy trace of important program events.
Abstract: An assembler-based operating system can provide debugging features often found only on more advanced systems. These can include an interactive inspection program, an error-trap facility, and a real time, hard copy trace of important program events. These features, which can reduce the number of recompilation cycles needed for debugging, have been implemented in the FRIVLOS operating system for a 32K PDP-12.
TL;DR: In this paper, the debug processing function of CPU connected by main memory and common bus for instruction fetch and instruction write, etc. is exploited. But it is limited to a single instruction.
Abstract: PURPOSE:Utilization of the debug processing function of CPU connected by main memory and common bus for instruction fetch and instruction write, etc.
TL;DR: A small operating system is described that, from a minimum configuration consisting of a micro-computer and a teletype, simply and arbitrarily can be expanded with any type and number of 1/0 devices and utility routines.
TL;DR: The paper describes a method of adding abstract data and operators to a language that aids in the design, debugging, monitoring, and optimization of the program.
Abstract: The purpose of this paper is to define a method of adding extensibility to programming languages and to demonstrate the advantages of extensibility. The paper describes a method of adding ldquo;abstract data and operators” to a language. This aids in the design, debugging, monitoring, and optimization of the program. By allowing the programmer to use the data constructs which fit his problem, the design and coding of the algorithm are integrated. Effective monitoring of the code is accomplished by using the newly defined operator entry and exit points as probe points. After initial debugging, the program can be optimized without changing any code by improving the implementation of the data type representation and by implementing important operators in micro-code.
TL;DR: High-level languages for microprocessors were introduced in 1973 with Intel's 8008 PLM and Lawrence Livermore Laboratory's BASIC combines the best features of both compilers and interpreters.
Abstract: High-level languages for microprocessors were introduced in 1973 with Intel's 8008 PLM. Since then, a controversy has raged over the worthiness or unworthiness of high-level languages in microprocessor applications. Now, in 1976, most microprocessor vendors have already announced plans for high-level languages. They range from PLM compilers to the BASIC interpreters. Lawrence Livermore Laboratory's BASIC combines the best features of both compilers and interpreters. LLL's BASIC consists of a 5K-byte PROM resident interpreter, used for program generation and debugging, and a cross-compiler used to convert the lengthy, inefficient interpretive program into an efficient object code. The finalized object code executes faster than an equivalent PDP-8e FOCAL program, which indicates BASIC's capabilities in the areas of data acquisition and control, where FOCAL has been so well accepted. 3 figures, 3 tables.
TL;DR: In this paper, the authors propose a debugging tool to detect hardware trouble, including intermittent trouble of processors or channels, especially by debugging an online program, in order to effectively detect hardware problems.
Abstract: PURPOSE:To effectively detect hardware trouble, including intermittent trouble of processors or channels, especially by debugging an online program.