Syntax error in ".py" file and globals variable values not available.

Alexis Boutillier alexis.boutillier at arteris.com
Thu Aug 28 10:40:31 CEST 2008


Timothy Grant a écrit :
> On Wed, Aug 27, 2008 at 2:49 AM, Alexis Boutillier
> <alexis.boutillier at arteris.com> wrote:
>> Hi,
>>
>> I have a strange behaviour of python with pdb and import statement.
>> Here is the example code :
>>
>> file my1.py:
>> import my2
>>
>> file my2.py:
>> a=5
>> toto
>>
>> I intentionnaly put a syntax error in file my2.py.
>>
>> If I run "python -i my2.py" and run pdb I got :
>> NameError: name 'toto' is not defined
>>>>> import pdb
>>>>> pdb.pm()
>> -> toto
>>>>> print a
>> 5
>>
>> If I run "python -i my1.py" and run pdb I got :
>> NameError: name 'toto' is not defined
>>>>> import pdb
>>>>> pdb.pm()
>> -> toto
>>>>> print a
>> None
>>
>> Why can't I get access to variable a in pdb when the process generating the
>> error came from an import statement ?
>>
>> With python 2.3.5, it works fine and in the two cases I get the correct
>> value of 5 for variable "a".
>> with python 2.43,2.5.1,2.5.2, it doesn't work and I get "None" value for
>> variable a.
>>
>> Somebody can explain me this behaviour ?
>>
>>
>> Thanks.
>> --
>> Boutillier Alexis
>> Methodology engineer
>>
>> Arteris SA
>> The Network-on-Chip Company TM
>> www.arteris.net
>>
>> 6 par Ariane Immeuble Mercure
>> 78284 Guyancourt Cedex
>> France
>> Office: (+33) 1 61 37 38 71
>> Fax:    (+33) 1 61 37 38 41
>> Alexis.Boutillier at arteris.net
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
> 
> 
> Because of the syntax error the module wasn't loaded.
> 
> What kind of behaviour would you expect on code that has been flagged
> as not executable?
> 
I got the same behaviour with :
file my2.py:
a=5
raise SystemError,""

In pdb, I can't have the value of attribute a.
So this is not linked to the fact that it is a SyntaxError or a SystemError.

I expect to be able to have the value of all attributes that have been 
used before the error occured.
This is problematic because in a more complicated code, you can't have 
the value of the attribute that was used before the error occured.
Python know that this attribute exist, it only don't have its value. 
other attribute affected are : __name__,__doc__,__file__.

-- 
Boutillier Alexis
Methodology engineer

Arteris SA
The Network-on-Chip Company TM
www.arteris.net

6 par Ariane Immeuble Mercure
78284 Guyancourt Cedex
France
Office: (+33) 1 61 37 38 71
Fax:    (+33) 1 61 37 38 41
Alexis.Boutillier at arteris.net



More information about the Python-list mailing list