# New Ticket Created by  Leon Brocard 
# Please include the string:  [netlabs #744]
# in the subject line of all future correspondence about this issue. 
# <URL: http://bugs6.perl.org/rt2/Ticket/Display.html?id=744 >


I played with pdb and tracing today and liked the way that pdb escaped
strings, eg while diplaying the op 'print "hello\nthere" it put the
'\n' instead of a newline. Tracing is much more useful (and easier to
parse!) if it does this too, so I nabbed PDB_escape and exploited
it. Expect pretty graphs of parrot -t output...

Leon
-- 
Leon Brocard.............................http://www.astray.com/
Nanoware...............................http://www.nanoware.org/

........ It's not in the manual!


-- attachment  1 ------------------------------------------------------
url: http://bugs6.perl.org/rt2/attach/3475/3316/7e4aa8/trace.c.patch

Index: trace.c
===================================================================
RCS file: /cvs/public/parrot/trace.c,v
retrieving revision 1.14
diff -u -r1.14 trace.c
--- trace.c     12 May 2002 04:37:57 -0000      1.14
+++ trace.c     28 Jun 2002 15:14:36 -0000
@@ -23,6 +23,7 @@
               opcode_t *pc)
 {
     INTVAL i;
+    char *escaped;
 
     fprintf(stderr, "PC=%ld; OP=%ld (%s)", (long)(pc - code_start), *pc,
             interpreter->op_info_table[*pc].full_name);
@@ -46,9 +47,9 @@
                 fprintf(stderr, "%ld", (long)*(pc + i));
                 break;
             case PARROT_ARG_SC:
-                fprintf(stderr, "\"%s\"",
-                        (char *)interpreter->code->const_table->
-                        constants[*(pc + i)]->string->bufstart);
+                escaped = PDB_escape(interpreter->code->const_table->
+                                     constants[*(pc + i)]->string->bufstart);
+                fprintf(stderr, "\"%s\"", escaped);
                 break;
             case PARROT_ARG_KC:
                 /* what will a KEY constant look like? */
@@ -69,9 +70,10 @@
                 break;
             case PARROT_ARG_S:
                 if (interpreter->string_reg.registers[*(pc + i)]) {
+                    escaped = PDB_escape(interpreter->string_reg.
+                                         registers[*(pc + i)]->bufstart);
                     fprintf(stderr, "S%ld=\"%s\"", (long)*(pc + i),
-                            (char *)interpreter->string_reg.
-                            registers[*(pc + i)]->bufstart);
+                            escaped);
                 }
                 else {
                     fprintf(stderr, "S%ld=(null)", (long)*(pc + i));

Reply via email to