Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| Newsgroups | perl.debugger |
|---|---|
| References | <2317061459153270@web10m.yandex.ru> <20160328143839.26068981@telaviv1.shlomifish.org> |
| Subject | Re: perl5db.pl improvements: apply user's context pragma while DB::eval |
| Message-ID | <2139741459172631@web10o.yandex.ru> (permalink) |
| Date | 2016-03-28 16:43 +0300 |
| From | kes-kes@yandex.ru (KES) |
I have update branch. Do some fix and create testcase.
Now you can run
/perl/lib $ PERL5DB='BEGIN{ require "./perl5db.pl" }' perl -Iperl5db/t -d perl5db/t/apply_users_pragma_when_eval
ACTUAL RESULTS:
Loading DB routines from perl5db.pl version 1.49_03
Editor support available.
Enter h or 'h h' for help, or 'man perldebug' for more help.
main::(perl5db/t/apply_users_pragma_when_eval:5):
5: my $l = MyMaths->new(1.2);
DB<1> n
main::(perl5db/t/apply_users_pragma_when_eval:6):
6: my $r = MyMaths->new(3.4);
DB<1> n
main::(perl5db/t/apply_users_pragma_when_eval:7):
7: print "A: ", $l + $r, "\n";
DB<1> n
A: 4.6
main::(perl5db/t/apply_users_pragma_when_eval:9):
9: print "B: ", $l + $r, "\n";
10: {
DB<1> n
B: 4 <<<<<<<<<<< NOTICE HERE
main::(perl5db/t/apply_users_pragma_when_eval:11):
11: no myint;
DB<1> print "B: ", $l + $r, "\n";
B: 4.6
BUT EXPECTED:
B: 4
http://perldoc.perl.org/perlpragma.html
A: 4.6
B: 4
C: 4.6
D: 4
E: 4.6
28.03.2016, 14:38, "Shlomi Fish" <shlomif@shlomifish.org>:
> Hi KES,
>
> First of all, note that you should not E-mail me at shlomif@iglu.org.il. E-mail
> me only at shlomif@shlomifish.org . Where did you find the @iglu.org.il address?
>
> See below for the rest of my reply.
>
> On Mon, 28 Mar 2016 11:21:10 +0300
> KES <kes-kes@yandex.ru> wrote:
>
>> Hi.
>>
>> When from debugger we evaluate some expression the user's context pragma is
>> not applyed.
>>
>> This patch fixes that:
>> https://github.com/KES777/perl/tree/apply_users_context_pragma
>
> I'm not sure I understand. Can you also include new test assertions (see
> lib/perl5db.t and lib/perl5db/t/ in the Perl distribution) that will fail
> before the changes to the production code and will pass after applying them?
> See:
>
> * https://en.wikipedia.org/wiki/Test-driven_development
>
> * http://perl-begin.org/uses/qa/
>
>> Need help with one problem, can not watch variables when the debugging
>> script.pl has 'use strict' in effect.
>>
>> Variable "$x" is not imported at (eval 10)[./perl5db.pl:740] line 1.
>> at (eval 10)[./perl5db.pl:740] line 1.
>> eval 'BEGIN{ ( $^H, ${^WARNING_BITS} ) = @DB::saved[7,8]; }($@, $!,
>> $^E, $,, $/, $\\, $^W) = @DB::saved;package main; $x; ' called
>> at ./perl5db.pl line 740 DB::eval called at ./perl5db.pl line 6051
>> DB::_add_watch_expr("\$x") called at ./perl5db.pl line 6071
>> DB::cmd_w("w", "\$x", 6) called at ./perl5db.pl line 4488
>> DB::cmd_wrapper("w", "\$x", 6) called at ./perl5db.pl line 3999
>> DB::Obj::_handle_cmd_wrapper_commands(DB::Obj=HASH(0x26593c0)) called
>> at ./perl5db.pl line 2881 DB::DB called at /home/kes/tmp/t3.pl line 6
>> Global symbol "$x" requires explicit package name (did you forget to declare
>> "my $x"?) at (eval 10)[./perl5db.pl:740] line 1.
>
> I don't understand.
>
>> But here the design problem because of next:
>> An eval '' executed within a subroutine defined in the DB package doesn't see
>> the usual surrounding lexical scope, but rather the scope of the first non-DB
>> piece of code that called it
>>
>> As we can see from stacktrace the 'first non-DB piece of code' is
>> DB::Obj::_handle_cmd_wrapper_commands(DB::Obj=HASH(0x26593c0)) called
>> at ./perl5db.pl line 2881
>>
>> So if we want $x be evaled at user's context the DB::DB *SHOULD NOT* call to
>> DB::Obj namespace.
>
> Not sure I understand (again). Can you provide a test case?
>
> Regards,
>
> Shlomi Fish
>
> --
> -----------------------------------------------------------------
> Shlomi Fish
>
> “Stop reinventing wheels, start building space rockets.”
> — The motto of the Comprehensive Perl Archive Network
Back to perl.debugger | Previous | Next — Previous in thread | Find similar
Re: perl5db.pl improvements: apply user's context pragma while DB::eval shlomif@shlomifish.org (Shlomi Fish) - 2016-03-28 14:38 +0300 Re: perl5db.pl improvements: apply user's context pragma while DB::eval kes-kes@yandex.ru (KES) - 2016-03-28 16:43 +0300
csiph-web