Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8924[/thread]

Debug-Mitteilungen einzelner Subs



<< >> 5 Einträge, 1 Seite
pktm
 2007-04-17 23:23
#76000 #76000
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich würde gerne einen Mechanismus verwenden, der es mir erlaubt innerhalb bestimmter Methoden, die ich festlege, Debug-Mitteilungen auszugeben.

Wenn ich z.B. mein noch kleines 810 Zeilen-Programm anwerfe möchte ich nicht alle Debug-Meldungen haben, die mitunter sehr umfangreich sein können da ich gerne mitlogge, wo ich von wo aus weshalb hingekommen bin, sondern nur jene aus bestimmten Methoden. Das allein um die Sache übersichtlich zu halten und weil ich schnell die relevanten Infos sehen möchte ohne mich durch eine Seite Mitteilungen blättern zu müssen.

Gibt es da was fertiges?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Ronnie
 2007-04-17 23:52
#76001 #76001
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ich glaube pq hat mal was gemacht, was irgendwo im Wiki steckt. Dabei werden AFAIR Attribute verwendet um Funktionsaufrufe zu wrappen, ähnlich wie man es bei Aspektorientierter Programmierung (siehe auch CPAN:AOP) macht.
Sucher
 2007-04-18 01:02
#76002 #76002
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo,

ptk hat vor kurzem ein Beispiel mit Hook::WrapSub geposted. Damit könntest du so etwas machen.
pq
 2007-04-18 01:08
#76003 #76003
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
ich hab da mal was im wiki gepostet, ja:
Wiki:DebugTracer
aber die verschiedenen CPAN-module dazu sind glaub ich ausgereifter.
an meinem beispiel kannst du aber gucken, wie's im prinzip funktioniert.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
betterworld
 2007-04-18 13:07
#76004 #76004
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Dieses Script gibt eine Debug-Meldung aus, wenn es mit der Option -debug=main::foo gestartet wird:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;


GetOptions(
    'debug:s' => \my $debug,
) or die;
if (defined ($debug)) {
    $debug = {map {$_, 1} split /,/, $debug};
}

sub debug {
    my ($msg) = @_;
    my $caller = (caller(1))[3];
    warn "$msg\n" if exists $debug->{$caller};
}

sub foo {
    debug('foo called');
}

sub bar {
    debug('bar called');
}

foo();
bar();
<< >> 5 Einträge, 1 Seite



View all threads created 2007-04-17 23:23.