[IronPython] Iteration via __getitem__ doesn't work in the Visual Studio debugging environment
Dino Viehland
dinov at microsoft.com
Wed Sep 8 17:47:13 PDT 2010
Tony wrote:
> I have this program:
>
> class A(object):
> def __init__(self):
> self.data = range(5)
> def __getitem__(self, item):
> return self.data[item]
> a = A()
> for v in a:
> print v
>
> i.e. there's a class that gets iteration through the __getitem__
> method. When run with IronPython in the shell (or with CPython), you
> get the expected result:
>
> C:\>"c:\Programs\IronPython 2.7\ipy.exe" Program.py
> 0
> 1
> 2
> 3
> 4
>
> C:\>c:\Python27\python.exe Program.py
> 0
> 1
> 2
> 3
> 4
>
> Underneath, of course, this is doing a[0], a[1], a[2], a[3], a[4], and
> stopping when a[5] raises an IndexError.
>
> When I run this in Visual Studio, the debugger catches the IndexError,
> so this doesn't work. It seems like the exception should be allowed
> to propagate further, so that the iteration works - but maybe this
> just isn't compatible with how the debugger works?
>
> (It's easy enough to fix this by defining _iter__, of course).
>
> Is this a bug? Or just a limitation of how the debugging environment
> works?
If you hit F5 and continue execution it should keep on running. You can
also disable breaking on exceptions via Debug->Exceptions and uncheck the
"thrown" column for CLR exceptions. It should just be breaking so you can
look around and seeing what's going on.
More information about the Users
mailing list