20 research outputs found

    An Implementation of Object-Oriented Program Transformation for Thought-Guided Debugging

    Get PDF
    This paper presents our design and implementation of program transformation for C++ that will be used in the context of a thought-guided debugging system. The program uses a lexical analyzer written in Flex and a grammar written in Bison that work in conjunction to scan the inputted C++ code for function definitions and class definitions. The code is then transformed to produce trace information for each defined function, while the original functionality of the code is left untouched. We also implement two additional data structures that are used for information storage during the course of the program

    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

    Optimal divide and query

    Full text link
    Algorithmic debugging is a semi-automatic debugging technique that allows the programmer to precisely identify the location of bugs without the need to inspect the source code. The technique has been successfully adapted to all paradigms and mature implementations have been released for languages such as Haskell, Prolog or Java. During three decades, the algorithm introduced by Shapiro and later improved by Hirunkitti has been thought optimal. In this paper we first show that this algorithm is not optimal, and moreover, in some situations it is unable to find all possible solutions, thus it is incomplete. Then, we present a new version of the algorithm that is proven optimal, and we introduce some equations that allow the algorithm to identify all optimal solutions.This work has been partially supported by the Spanish Ministerio de Ciencia e Innovación under grant TIN2008-06622-C03-02 and by the Generalitat Valenciana under grant PROMETEO/2011/052.Insa Cabrera, D.; Silva Galiana, JF. (2011). Optimal divide and query. En Progress in Artificial Intelligence. Springer Verlag (Germany). 7026:224-238. https://doi.org/10.1007/978-3-642-24769-9_17S2242387026Braßel, B., Huch, F.: The Kiel Curry system KiCS. In: Proc of 17th International Conference on Applications of Declarative Programming and Knowledge Management (INAP 2007) and 21st Workshop on (Constraint) Logic Programming (WLP 2007), pp. 215–223. Technical Report 434, University of Würzburg (2007)Caballero, R.: A Declarative Debugger of Incorrect Answers for Constraint Functional-Logic Programs. In: Proc. of the 2005 ACM SIGPLAN Workshop on Curry and Functional Logic Programming (WCFLP 2005), pp. 8–13. ACM Press, New York (2005)Caballero, R.: Algorithmic Debugging of Java Programs. In: Proc. of the 2006 Workshop on Functional Logic Programming (WFLP 2006). Electronic Notes in Theoretical Computer Science, pp. 63–76 (2006)Caballero, R., Martí-Oliet, N., Riesco, A., Verdejo, A.: A Declarative Debugger for Maude Functional Modules. Electronic Notes in Theoretical Computer Science 238, 63–81 (2009)Davie, T., Chitil, O.: Hat-delta: One Right Does Make a Wrong. In: Seventh Symposium on Trends in Functional Programming, TFP 2006 (April 2006)Fritzson, P., Shahmehri, N., Kamkar, M., Gyimóthy, T.: Generalized Algorithmic Debugging and Testing. LOPLAS 1(4), 303–322 (1992)Hirunkitti, V., Hogger, C.J.: A Generalised Query Minimisation for Program Debugging. In: Adsul, B. (ed.) AADEBUG 1993. LNCS, vol. 749, pp. 153–170. Springer, Heidelberg (1993)Insa, D., Silva, J.: An Algorithmic Debugger for Java. In: Proc. of the 26th IEEE International Conference on Software Maintenance, pp. 1–6 (2010)Insa, D., Silva, J.: Optimal Divide and Query (extended version). Available in the Computing Research Repository (July 2011), http://arxiv.org/abs/1107.0350Lloyd, J.W.: Declarative Error Diagnosis. New Gen. Comput. 5(2), 133–154 (1987)Luo, Y., Chitil, O.: Algorithmic debugging and trusted functions. Technical report 10-07, University of Kent, Computing Laboratory, UK (August 2007)Lux, W.: Münster Curry User’s Guide (release 0.9.10 of May 10, 2006), http://danae.uni-muenster.de/~lux/curry/user.pdfMacLarty, I.: Practical Declarative Debugging of Mercury Programs. PhD thesis, Department of Computer Science and Software Engineering, The University of Melbourne (2005)Naish, L., Dart, P.W., Zobel, J.: The NU-Prolog Debugging Environment. In: Porto, A. (ed.) Proceedings of the Sixth International Conference on Logic Programming, Lisboa, Portugal, pp. 521–536 (June 1989)Nilsson, H.: Declarative Debugging for Lazy Functional Languages. PhD thesis, Linköping, Sweden (May 1998)Pope, B.: A Declarative Debugger for Haskell. PhD thesis, The University of Melbourne, Australia (2006)Shapiro, E.: Algorithmic Program Debugging. MIT Press (1982)Silva, J.: A Comparative Study of Algorithmic Debugging Strategies. In: Puebla, G. (ed.) LOPSTR 2006. LNCS, vol. 4407, pp. 143–159. Springer, Heidelberg (2007)Silva, J.: An Empirical Evaluation of Algorithmic Debugging Strategies. Technical Report DSIC-II/10/09, UPV (2009), http://www.dsic.upv.es/~jsilva/research.htm#tech

    Handling pointers and unstructured statements in the forward computed dynamic slice algorithm

    Get PDF
    Different program slicing methods are used for debugging, testing, reverse engineering and maintenance. Slicing algorithms can be classified as a static slicing or dynamic slicing type. In applications such as debugging the computation of dynamic slices is more preferable since it can produce more precise results. In a recent paper [5] a new so-called "forward computed dynamic slice" algorithm was introduced. It has the great advantage compared to other dynamic slice algorithms that the memory requirements of this algorithm are proportional to the number of different memory locations used by the program, which in most cases is much smaller than the size of the execution history. The execution time of the algorithm is linear in the size of the execution history. In this paper we introduce the handling of pointers and the jump statements (goto, break, continue) in the C language

    Compositional explanation of types and algorithmic debugging of type errors

    Get PDF

    An Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques

    Full text link
    This thesis presents a classification of program slicing based techniques. The classification allows us to identify the differences between existing techniques, but it also allows us to predict new slicing techniques. The study identifies and compares the dimensions that influence current techniques.Silva Galiana, JF. (2008). An Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques. http://hdl.handle.net/10251/14300Archivo delegad
    corecore