27 research outputs found

    Querypoint : Moving Backwards on Wrong Values in the Buggy Execution

    Get PDF
    As developers debug, they often have to seek the origins of wrong values they see in their debugger. This search must be performed backwards in time since the code causing the wrong value is executed before the wrong value appears. Therefore, locating the origin of wrong values with breakpoint- or log- based debuggers demands persistence and significant experience. \textit{Querypoint}, is a Firefox plugin that enhances the popular Firebug JavaScript debugger with a new, practical feature called \textit{lastChange}. \textit{lastChange} automatically locates the last point at which a variable or an object property has been changed. Starting from a program suspended on a breakpoint, the \textit{lastChange} algorithm applies queries to the live program during re-execution, recording the call stack and limited program state each time the property value changes. When the program halts again on the breakpoint, it shows the call stack and program state at the last change point. To evaluate the usability and effectiveness of \textit{Querypoint} we studied four experienced JavaScript developers applying the tool to two test cases

    Omniscient Debugger for Thonny Integrated Development Environment

    Get PDF
    Thonny on Python 3 programmeerimiskeele integreeritud arenduskeskkond algajatele programmeerijatele. Bakalaureusetöö eesmärk on dokumenteerida Thonny tagasüsteemi ning silurit ja täiendada Thonny silurit, andes sellele programmi eelmiste olekute kuvamise võimekuse, mida kutsutakse kõiketeadvaks silumiseks. Esmalt tutvustatakse lugejale levinumaid silumistehnikaid. Seejärel antakse ülevaade Thonnyst ja tema hetke versiooni funktsionaalsustest. Siis kirjeldatakse Thonny praeguse siluri arhitektuuri, teostatava kõiketeadva siluri arhitektuuri ja elluviimist. Lõpuks esitatakse esialgsed beetatestimise tulemused.Thonny is an integrated development environment for Python 3 programming language, designed for beginner programmers. This thesis aims to document Thonny’s back-end, debugger and improve Thonny’s debugger by giving it the ability to display previous program states, called omniscient debugging. The reader is first introduced to common debugging techniques. Then an overview of Thonny and its current version’s functionalities is given. After that, the architecture of Thonny’s current debugger, the structure and the implementation of the omniscient debugger are described. Finally, the preliminary beta testing results are presented

    A general approach to derive uncontrolled reversible semantics

    Get PDF
    Reversible computing is a paradigm where programs can execute backward as well as in the usual forward direction. Reversible computing is attracting interest due to its applications in areas as different as biochemical modelling, simulation, robotics and debugging, among others. In concurrent systems the main notion of reversible computing is called causal-consistent reversibility, and it allows one to undo an action if and only if its consequences, if any, have already been undone. This paper presents a general and automatic technique to define a causal-consistent reversible extension for given forward models. We support models defined using a reduction semantics in a specific format and consider a causality relation based on resources consumed and produced. The considered format is general enough to fit many formalisms studied in the literature on causal-consistent reversibility, notably Higher-Order π-calculus and Core Erlang, an intermediate language in the Erlang compilation. Reversible extensions of these models in the literature are ad hoc, while we build them using the same general technique. This also allows us to show in a uniform way that a number of relevant properties, causal-consistency in particular, hold in the reversible extensions we build. Our technique also allows us to go beyond the reversible models in the literature: we cover a larger fragment of Core Erlang, including remote error handling based on links, which has never been considered in the reversibility literature

    A General Approach to Derive Uncontrolled Reversible Semantics

    Get PDF
    Reversible computing is a paradigm where programs can execute backward as well as in the usual forward direction. Reversible computing is attracting interest due to its applications in areas as different as biochemical modelling, simulation, robotics and debugging, among others. In concurrent systems the main notion of reversible computing is called causal-consistent reversibility, and it allows one to undo an action if and only if its consequences, if any, have already been undone. This paper presents a general and automatic technique to define a causal-consistent reversible extension for given forward models. We support models defined using a reduction semantics in a specific format and consider a causality relation based on resources consumed and produced. The considered format is general enough to fit many formalisms studied in the literature on causal-consistent reversibility, notably Higher-Order ?-calculus and Core Erlang, an intermediate language in the Erlang compilation. Reversible extensions of these models in the literature are ad hoc, while we build them using the same general technique. This also allows us to show in a uniform way that a number of relevant properties, causal-consistency in particular, hold in the reversible extensions we build. Our technique also allows us to go beyond the reversible models in the literature: we cover a larger fragment of Core Erlang, including remote error handling based on links, which has never been considered in the reversibility literature

    Processo de depuração depois do teste: definição e análise.

    Get PDF
    O objetivo da realização deste trabalho foi analisar em detalhes o processo de depuração que ocorre depois da atividade de teste. Por tanto, vários processos de depuração de software foram analisados. Baseado nessa análise foi definido um processo de Depuração depois do teste (DDT) que enfativa os seguintes aspectos: identificação, avaliação e refinamento sucessivo de sintomas internos até a localização do defeito; e tipo de informação de teste utilizada. Várias técnicas de depuração foram então avaliadas em termos de mecanismos de apoio ao processo DDT e quanto a sua escabilidade para programas reais. Dessa avaliação, observou-se que os resultados do teste sistemático de software, quando utilizado na depuração, resultam em técnicas de baixo custo e com maiores perspectivas de escabilidade para programas reais. Infelizmente, esses resultados têm sido utilizados apenas para apoiar um dos aspectos do processo DDT- identificação de sintomas internos. Essa observação motiva a definição de estratégias de depuração que utilizem, de maneira eficaz e eficiente, as informações de teste na avaliação e no refinamento de sintomas internos.bitstream/CNPTIA/9957/1/bolpesq5.pdfAcesso em: 28 maio 2008

    Static versus dynamic reversibility in CCS

    Get PDF
    The notion of reversible computing is attracting interest because of its applications in diverse fields, in particular the study of programming abstractions for fault tolerant systems. Most computational models are not naturally reversible since computation causes loss of information, and history information must be stored to enable reversibility. In the literature, two approaches to reverse the CCS process calculus exist, differing on how history information is kept. Reversible CCS (RCCS), proposed by Danos and Krivine, exploits dedicated stacks of memories attached to each thread. CCS with Keys (CCSK), proposed by Phillips and Ulidowski, makes CCS operators static so that computation does not cause information loss. In this paper we show that RCCS and CCSK are equivalent in terms of LTS isomorphism
    corecore