10 research outputs found

    Multiple-View Tracing for Haskell: a New Hat

    Get PDF
    Different tracing systems for Haskell give different views of a program at work. In practice, several views are complementary and can productively be used together. Until now each system has generated its own trace, containing only the information needed for its particular view. Here we present the design of a trace that can serve several views. The trace is generated and written to file as the computation proceeds. We have implemented both the generation of the trace and several different viewers

    Preliminary proceedings of the 2001 ACM SIGPLAN Haskell workshop

    Get PDF
    This volume contains the preliminary proceedings of the 2001 ACM SIGPLAN Haskell Workshop, which was held on 2nd September 2001 in Firenze, Italy. The final proceedings will published by Elsevier Science as an issue of Electronic Notes in Theoretical Computer Science (Volume 59). The HaskellWorkshop was sponsored by ACM SIGPLAN and formed part of the PLI 2001 colloquium on Principles, Logics, and Implementations of high-level programming languages, which comprised the ICFP/PPDP conferences and associated workshops. Previous Haskell Workshops have been held in La Jolla (1995), Amsterdam (1997), Paris (1999), and Montr´eal (2000). The purpose of the Haskell Workshop was to discuss experience with Haskell, and possible future developments for the language. The scope of the workshop included all aspects of the design, semantics, theory, application, implementation, and teaching of Haskell. Submissions that discussed limitations of Haskell at present and/or proposed new ideas for future versions of Haskell were particularly encouraged. Adopting an idea from ICFP 2000, the workshop also solicited two special classes of submissions, application letters and functional pearls, described below

    Tools for Discovery, Refinement and Generalization of Functional Properties by Enumerative Testing

    Get PDF
    This thesis presents techniques for discovery, refinement and generalization of properties about functional programs. These techniques work by reasoning from test results: their results are surprisingly accurate in practice, despite an inherent uncertainty in principle. These techniques are validated by corresponding implementations in Haskell and for Haskell programs: Speculate, FitSpec and Extrapolate. Speculate discovers properties given a collection of black-box function signatures. Properties discovered by Speculate include inequalities and conditional equations. These properties can contribute to program understanding, documentation and regression testing. FitSpec guides refinements of properties based on results of black-box mutation testing. These refinements include completion and minimization of property sets. Extrapolate generalizes counterexamples of test properties. Generalized counterexamples include repeated variables and side-conditions and can inform the programmer what characterizes failures. Several example applications demonstrate the effectiveness of Speculate, FitSpec and Extrapolate

    Slicing slices, an incremental backward trace slicing methodology for rwl computations

    Full text link
    [EN] Execution traces are an important source of information for program understanding and debugging. However, they have as an important drawback that they are commonly huge and complex, making their manual analysis unfeasible. In this master's thesis, we develop a trace slicing technique for rewriting logic computations together with its corresponding implementation in the iJulienne graphical tool. Such technique gives support to the analysis of complex, textually-large system computations in rewriting logic, which is a general framework efficiently implemented in the Maude language. Given a Maude execution trace T and a slicing criterion for the trace (i.e., a piece of information that we want to observe in the final computation state), we traverse T from back to front and the backward dependence of the observed information is incrementally computed at each execution step. At the end of the traversal, a simplified trace slice is obtained by filtering out all the irrelevant data that do not impact on the data of interest. By simplifying the trace, the iJulienne tool, which implements the proposed trace slicing technique, favors better inspection and debugging activities. iJulienne is also endowed with a trace querying mechanism that increases flexibility and reduction power and allows program runs to be examined at the appropriate level of abstraction[ES] Las trazas de ejecución son una importante fuente de información para el entendimiento y depuración de los programas. Sin embargo, poseen el importante inconveniente de ser habitualmente enormes y complejas, haciendo inviable su análisis manual. En esta tesis de máster se ha desarrollado una técnica de fragmentación de trazas para computaciones en lógica de reescritura junto con su correspondiente implementación en la herramienta gráfica iJulienne. Dicha técnica da soporte al análisis de extensas y complejas computaciones en lógica de reescritura, que es un marco formal muy general eficientemente implementado en el lenguaje Maude. Dada una traza de ejecución de Maude T y un criterio de fragmentación para la traza (es decir, un fragmento de información que se desea observar en el estado final de la computación), nuestra técnica recorre T de atrás hacia adelante a la vez que calcula la dependencia hacia atrás de la información observada de forma incremental en cada paso de ejecución. Al final del recorrido se obtiene una traza fragmentada simplificada al filtrar toda la información irrelevante que no afecta a los datos de interés. Al simplificar la traza, la herramienta iJulienne, que implementa la técnica de fragmentado propuesta, favorece un mejor análisis y depuración de las trazas manipuladas. iJulienne está además dotada de un mecanismo de consulta de la traza que incrementa la flexibilidad y poder de reducción y permite examinar las ejecuciones de programas en el nivel apropiado de abstracciónSapiña Sanchis, J. (2013). Slicing slices, an incremental backward trace slicing methodology for rwl computations. http://hdl.handle.net/10251/44971Archivo delegad

    Freja, Hat and Hood --- A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs

    Get PDF
    In this paper we compare three systems for tracing and debugging Haskell programs: Freja, Hat and Hood. We evaluate their usefulness in practice by applying them to a number of moderately complex programs in which errors had deliberately been introduced. We identify the strengths and weaknesses of each system and then form ideas on how the systems can be improved further
    corecore