Apache Remote Debugging ALMOST working
bensoft wrote on Tue Nov 20 17:24:23 CET 2007:
I have had some success using EPIC remote debugging with Apache, however,
the
debugging session mysterisouly terminates. I am using Apache on the local
machine
pointed into my projects directory so the source files are identical.
In my apache virtual host I have set:
SetEnv PERLDB_OPTS "RemotePort=127.0.0.1:4000 DumpReused ReadLine=0"
(this was taken from an EPIC debug package zip)
I am using the Cygwin perl 5.8.8 and using the debug shebang.
#!/usr/bin/perl -d
use CGI;
my $q = new CGI;
print $q->header();
foreach my $key (sort(keys %ENV)) {
print "$key = $ENV{$key}
\n";
}
my $num1=$q->param('num1');
my $num2=$q->param('num2');
my $sum=$num1 + $num2;
print "$num1 + $num2 = $sum";
I can successfully debug at the command line using netcat
listening on port 4000 (line continuations added for readability)
The first three lines (printf and two require lines) are taken
from the EPIC debug startup:
$ nc -l -p 4000
Loading DB routines from perl5db.pl version 1.28
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(C:/projects/testcgi/add.cgi:5):
5: my $q = new CGI;
DB<1> printf $DB::OUT "%vd", $^V;
5.8.8
DB<2> require IO::Socket; {my $OUT;$OUT = new IO::Socket::INET(Timeout
=> '10', \
PeerAddr => '127.0.0.1:5000',Proto => 'tcp',); \
STDOUT->fdopen($OUT,"w");STDIN->fdopen($OUT,"r");}
DB<3> require IO::Socket; {my $OUT;$OUT = new IO::Socket::INET(Timeout
=> '10', \
PeerAddr => '127.0.0.1:5001',Proto => 'tcp',);STDERR->fdopen($OUT,"w");}
DB<4> l
5==> my $q = new CGI;
6: print $q->header();
7
8: foreach my $key (sort(keys %ENV)) {
9: print "$key = $ENV{$key}
\n";
10 }
11
12
13: my $num1=$q->param('num1');
14: my $num2=$q->param('num2');
DB<4> c 13
main::(C:/projects/testcgi/add.cgi:13):
13: my $num1=$q->param('num1');
DB<5> w $num1
DB<8> c
Watchpoint 0: $num1 changed:
old value: ''
new value: '1'
main::(C:/projects/testcgi/add.cgi:14):
14: my $num2=$q->param('num2');
DB<8>
The EPIC remote debug parameters are as follows:
Project: testcgi
File to execute: add.cgi
Local Host IP: 127.0.0.1
Installation path: C:/projects/testcgi
Port: 4000
(not creating a debug package)
I have isolated the problem to a connection failure in the EPIC
debug communication. The EPIC debug session mysteriously quits
issuing a 'q' after setting the sockets.
Loading DB routines from perl5db.pl version 1.28
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(C:/projects/testcgi/add.cgi:5):
5: my $q = new CGI;
DB<1> printf $DB::OUT "%vd", $^V;
5.8.8
DB<2> require IO::Socket; {my $OUT;$OUT = new IO::Socket::INET(Timeout
=> '10',PeerAddr => '127.0.0.1:5000',Proto => 'tcp',);STDOUT->fdopen($OUT,"w");STDIN->fdopen($OUT,"r");}
DB<3> require IO::Socket; {my $OUT;$OUT = new IO::Socket::INET(Timeout
=> '10',PeerAddr => '127.0.0.1:5001',Proto => 'tcp',);STDERR->fdopen($OUT,"w");}
q
Any ideas?
--Dave
jploski wrote on Tue Nov 20 19:01:24 CET 2007:
Have you tried unchecking "Capture Output" in the remote launch configuration dialog in Eclipse?
bensoft wrote on Thu Nov 22 20:39:24 CET 2007:
There appears to be no difference with capture checked or unchecked. Occasionally, the debug process gets a little farther but I haven't been able to reliably replicate that condition. The final 'q' show in my original posting appears in red. Does this mean that the termination of the debugging session is being initiated by EPIC?
jploski wrote on Thu Nov 22 20:50:01 CET 2007:
Regarding the lack of effect in 'capture': Are you using the latest version of testing? I expected clearing the checkbox to eliminate the IO::Socket lines from the debugging output. Regarding 'q' in red, yes, it means that it's issued by EPIC. But so are all the other commands to the debugger. Did you check the error log (in $WORKSPACE/.metadata/.log)? It might provide extra clues to what is going on.
Note: The above is an archived snapshot of a forum thread. Use the original thread at sf.net to post comments.