Debugger Chokes on Objects

bugfood wrote on Tue Mar 29 01:46:32 MEST 2005:
I get the following error when I try to debug an object:

Error Parsing Debugger Variables
  *******************************
  *******************************
  +++++++Error Parsing Vars++++++
  *******************************
  *******************************
  null
  -------------------------------
  -------------------------------
  +++++++Error Parsing Vars++++++
  -------------------------------
  -------------------------------

This occurred with both the following versions of Eclipse:

Version: 3.0.1
Build id: 200409161125

and 

Version: 3.0.2
Build id: 200503110845

I have:
    ActiveState Perl 5.8.3.809
    EPIC 0.3.0 (the newest so far as I can tell)

I have installed PadWalker from the EPIC site.

Here is some simple test code to demonstrate the problem:

Obj.pm:

package Obj;
use warnings;
use strict;

sub new() {
	my $caller = shift();
	my $class = ref($caller) || $caller;
	my $self = {};
	bless($self, $class);
	return $self;
}

1;


driver.pl:

use Obj;
use warnings;
use strict;

my $obj = Obj->new();

When I launch driver.pl in the debugger, it starts at the last line. I click
step into. The source view switches to display Obj.pm. The first line of
sub new is highlighted, and the error dialog appears. The error reappears
every time I click step into.

There is no problem if I step over the instantiation of the object.
ericryoung wrote on Fri Apr  1 17:22:36 MEST 2005:
A bit of a me too, with a bit more information.  Can anyone help with this?
 

My setup, Windows XP, Eclipse 3.0.2, EPIC 0.3.10, Perl = cygwin 5.8.6

It appears that this is related to Padwalker and packages.  I have test
code that runs OK without Padwalker installed but crashes the debugging
processes (meaning the perl script stops running) when Padwalker is installed.

It appears Padwalker is having problems getting to locally scoped variables
within the non-default packages (or something like that).

Here's my test code:

TestModule.pm:

package TestModule;
use strict;
use warnings;
use Exporter();
our @ISA = qw (Exporter);
our @EXPORT = qw( ModuleSubroutine );
our @EXPORT_OK =  qw(  );
sub ModuleSubroutine
{
	my $input = shift;
	print "Our Input was: $input\n";
}

1;

driver.pl:
#!/usr/bin/perl

use TestModule;
print "This is a test\n";

testmainsub("fun fun fun");
ModuleSubroutine("blah");
print "Then we have this line, to follow\n";
sub testmainsub
{
	my $a = shift;
	print "A main subroutine with locally scoped var with value: $a\n";
}

In the error condition, the 'testmainsub' seems to work fine but ModuleSubroutine
will die on the first line of the sub.

When I remove Padwalker from my perl install,  I get the annoying 'install
padwalker' message, but it does run to the end.

Note: The above is an archived snapshot of a forum thread. Use the original thread at sf.net to post comments.