alt.comp/scripts

perl debugging

2007.08.31 14:00

* -w option

먼저 내부 Perl Script의 Error(Syntax, Symantic)를 검출하기 위한 switch로 -w 이 있습니다.
사용법 : perl -w yourprogram.pl
약자그대로 내부적으로 Perl 프로그래밍 상의 문제가 있을 경우 warning이 출력됩니다.
하지만 대부분의 Perl은 심각한 error가 아닌 이상 다 실행됩니다.


* -d option
또하나가 Debugger 가 있습니다.
사용법 :: perl -d yourprogram.pl
실행하면 아래와 같이 debugger 상에서 s를 입력하면 Single Step 단위로 실행할 수 있습니다.
그외 일반적인 debugger 처럼 savepoint, trace등의 option이 있는 것 같은데
사용하기엔 조금은 어렵지 않나 생각됩니다. 프로그램이 돌아가는 Flow를 따라가고 싶을 경우엔
s 명령어를 계속 입력하면서 trace해보는 게 좋을 듯 합니다.

esm03:[/usr/OV/tmp]perl -d test.pl

Loading DB routines from perl5db.pl version 1.0402
Emacs support available.

Enter h or `h h' for help.

main::(test.pl:5):      require HTTP::Request;
  DB<1> s
main::(test.pl:6):      require LWP;
  DB<1> s
main::(test.pl:12):     $uptime = `uptime`;
  DB<1> s
main::(test.pl:14):     $uptime =~ /up (.*?),/;
  DB<1> s
main::(test.pl:15):     $up = $1;
  DB<1> s
main::(test.pl:17):     $opt_host =  $ARGV[0];
  DB<1> s
main::(test.pl:18):     $opt_number = "3";
  DB<1> q


* insert debugging line
그외 소스에 Debug용 라인을 직접 입력하는 겁니다.
일반적으로 Perl은 다음과 같은 Variable 형태가 있습니다.
$yourvariable => 일반적인 변수
@yourarray => Array(Ordered list of values)
%yourhash => Hash(set of key/value pairs)
대부분 위의 형태로 값들을 저장하는데 해당 변수의 값을 찍어보고 싶다 그럴 경우
다음과 같이 STDOUT으로 출력하시면 됩니다.

print "The value is $yourvariable \n";
print "The array is $yourarray \n";
print "The hash is $yourhash \n";

만약 특정 파일에다 Log를 남기고 싶다. 그럴 경우엔

   open(OUTFILE, ">>/tmp/yourlog" ); (>는 write, >>는 write & append)
   ....
   print OUTFILE "your value is $yourvariable \n";
   .....
   close(OUTFILE);

'alt.comp > scripts' 카테고리의 다른 글

perl debugging  (0) 2007.08.31
portping - perl script  (0) 2007.08.31

+ Recent posts