gnb@bby.oz.au (Gregory N. Bond) (05/28/91)
I came a cross this bug while playing with Randal's chat2 package.
When using the debugger, and stepping into a subroutine defined with
eval, the debugger looses all knowledge of files and line numbers.
Witness the following script:
Script started on Tue May 28 11:28:55 1991
leo% perl -v
This is perl, version 4.0
$RCSfile: perl.c,v $$Revision: 4.0.1.1 $$Date: 91/04/11 17:49:05 $
Patch level: 3
Copyright (c) 1989, 1990, 1991, Larry Wall
Perl may be copied only under the terms of the GNU General Public License,
a copy of which can be found with the Perl 4.0 distribution kit.
leo% perl -d t.perl
Loading DB routines from perldb.pl 4.0 91/03/20
Enter h for help.
main'(t.perl:4): $str = 'sub foo {
(t.perl:5): print "In Foo\n";
DB<1> l 1-20
1: #
2: # Show the bug with the eval'd subroutine definition
3:
4: $str = 'sub foo {
5: print "In Foo\n";
6: }
7: ';
8:
9: print "In main\n";
10:
11: eval $str;
12:
13: print "Have eval'd function foo.\n";
14:
15: &foo();
16:
17: print "Still in main.\n";
18:
19: print "Still in main again.\n";
DB<2> s
main'(t.perl:9): print "In main\n";
DB<2> s
In main
main'(t.perl:11): eval $str;
DB<2> s
DB'((eval):1): sub\foo {
((eval):2): print "In Foo\n";
DB<2> s
DB'((eval):1): #
DB<2> s
Have eval'd function foo.
DB'((eval):1): sub\foo {
((eval):2): print "In Foo\n";
DB<2> s
DB'((eval):1): #
DB<2> s
In Foo
DB'((eval):1): sub\foo {
((eval):2): print "In Foo\n";
DB<2> s
DB'((eval):1): #
DB<2> s
Still in main.
DB'((eval):1): sub\foo {
((eval):2): print "In Foo\n";
DB<2> s
DB'((eval):1): #
DB<2> s
Still in main again.
leo% ^D
script done on Tue May 28 11:29:28 1991
This is on a Sun 4, SunOs 4.03 (actually a Solboure + OS/MP 4.0D) as
well as a Sun 3/80, sunOs 4.1.
Once the eval defines a subroutine, no more line numbers and file names.
On a related note, if you step past a require statement using n, it
shouldn't show any of the "global" statements inside the require'd
file. Currently, it n is identical to s for require statments.
Greg.
--
Gregory Bond, Burdett Buckeridge & Young Ltd, Melbourne, Australia
Internet: gnb@melba.bby.oz.au non-MX: gnb%melba.bby.oz@uunet.uu.net
Uucp: {uunet,pyramid,ubc-cs,ukc,mcvax,prlb2,nttlab...}!munnari!melba.bby.oz!gnblwall@jpl-devvax.jpl.nasa.gov (Larry Wall) (06/01/91)
In article <GNB.91May28113114@leo.bby.oz.au> gnb@bby.oz.au (Gregory N. Bond) writes:
: I came a cross this bug while playing with Randal's chat2 package.
: When using the debugger, and stepping into a subroutine defined with
: eval, the debugger looses all knowledge of files and line numbers.
Already fixed in patch 4, whenever I get a chance to get it out...
Larry