[Vienna-pm] Überspringen von Zeilen im Debugger

Peter J. Holzer hjp-vienna-pm-list at hjp.at
Wed Nov 28 01:36:35 PST 2007


On 2007-11-27 12:06:31 +0100, Wolfgang Laun wrote:
> Peter J. Holzer wrote:
> >Eine kleine Frage zum Perl-Debugger:
> >
> >Wenn man ein Programm im Single-Step-Mode durchgeht, sieht man den
> >Fehler gelegentlich, bevor man die fehlerhafte(n) Zeile(n) tatsächlich
> >ausgeführt hat. Da wäre es dann praktisch, wenn man diese Zeilen einfach
> >überspringen und danach weitermachen könnte. Geht das? Ich habe nichts
> >gefunden.
> >
> c/continue mit Zeilennummer.

Nein, das führt die Zeilen dazwischen ja aus, und ich will sie
überspringen.

Wenn ich also in Zeile 1234 sehe, dass in Zeile 1235 gar gräßliches
passieren wird, dann möchte ich in Zeile 1236 weitermachen können, ohne
1235 auszuführen. Momentan ist die einzige Möglichkeit, die mir dazu
einfällt, das Programm abzubrechen, den Bug zu fixen und/oder ein if
einzubauen, dann das Programm wieder im Debugger zu starten, um mich zur
entsprechenden Stelle vorzutasten. Wenn das Programm einige Stunden
läuft und der Fehler erst gegen Ende auftritt, ist das ziemlich
zeitaufwändig.

Mit Actions kann man zwar zusätzlichen Code einfügen, aber der wird wohl
mit eval ausgeführt und kann den Control-Flow nicht ändern:

#!/usr/bin/perl

use warnings;
use strict;

sub f1 {
    my ($x) = @_;

    for (1 .. $x) {
        print "$_\n";	# <- line 10
    }
}

f1(10);

  DB<1> a 10 print "xxx" if $_ > 5;

hat den gewünschten Effekt:

  DB<3> c
1
2
3
4
5
xxx6
xxx7
xxx8
xxx9
xxx10
Debugged program terminated.  Use q to quit or R to restart,

Aber 

  DB<1> a 10 return if $_ > 5;

ist ein NOP:

  DB<2> c
1
2
3
4
5
6
7
8
9
10
Debugged program terminated.  Use q to quit or R to restart,


	hp

PS: Beim Googeln habe ich Devel::ebug entdeckt. Muss ich mir mal ansehen.

-- 
   _  | Peter J. Holzer    | It took a genius to create [TeX],
|_|_) | Sysadmin WSR       | and it takes a genius to maintain it.
| |   | hjp at hjp.at         | That's not engineering, that's art.
__/   | http://www.hjp.at/ |	-- David Kastrup in comp.text.tex
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20071128/9b9eb479/attachment.bin 


More information about the Vienna-pm mailing list