[IronPython] Problem stepping into functions in debugger with F11
Dino Viehland
dinov at exchange.microsoft.com
Thu May 24 18:28:12 CEST 2007
This looks like a bug - the issue here is that there's a section of code right after the method prologue which is not associated with any source information (see below to see the raw details). Luckily we have a command line switch which will get rid of the extra info and make stepping work for you again, and that's -X:NoTraceback (the extra instructions are marking line number info so we can extract it back out at runtime). The ultimate result of that switch is that exec'd code will be missing Python line number information.
In v2.0 we have gotten much more serious about getting the debugging experience 100% right. We're starting to bring on test suites to ensure that all of our debugging information is emitted correctly, that we step through the various control flow blocks in a reasonable way, etc... In v1.x we do an alright job but we haven't dedicated the test resources to ensure it's a great experience. Because of that I'm inclined to not open a bug on this and just say the experience will be much better in v2.0. Let me know if you think that's the wrong call :).
00000000 push ebp
00000001 mov ebp,esp
00000003 push edi
00000004 push esi
00000005 push ebx
00000006 sub esp,2Ch
00000009 xor eax,eax
0000000b mov dword ptr [ebp-24h],eax
0000000e mov dword ptr [ebp-28h],eax
00000011 mov dword ptr [ebp-38h],eax
00000014 xor eax,eax
00000016 mov dword ptr [ebp-18h],eax
00000019 mov dword ptr [ebp-30h],ecx
0000001c mov dword ptr [ebp-34h],edx
0000001f cmp dword ptr ds:[036132FCh],0
00000026 je 0000002D
00000028 call 76A35C56
0000002d xor edx,edx
0000002f mov dword ptr [ebp-2Ch],edx
00000032 xor edx,edx
00000034 mov dword ptr [ebp-38h],edx
00000037 mov dword ptr [ebp-28h],0 <!-F11 steps in here
0000003e mov dword ptr [ebp-2Ch],2 <!-next F11 ends up here
--- C:\Product\Released\IronPython-1.1\debugger.py -----------------------------
def add(a,b):
return a+b
00000045 nop <!-one more and we're in the function
00000046 mov edx,dword ptr [ebp-34h]
00000049 mov ecx,dword ptr [ebp-30h]
0000004c call dword ptr ds:[001C9150h]
00000052 mov esi,eax
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Julien Couvreur
Sent: Wednesday, May 23, 2007 1:04 PM
To: users at lists.ironpython.com
Subject: [IronPython] Problem stepping into functions in debugger with F11
Hi,
I'm running a simple program below. I'm trying to "step into" the "add" function. But Visual Studio 2005 and the Microsoft CLR Debugger (from the .Net 2.0 SDK) both complain that:
"There is no source code available for the current location."
They then offer me to view the disassembly.
Any ideas how to fix this?
Note that I do have "Enable Just My Code" turned on (which is the default).
Thanks,
Julien Couvreur
http://blog.monstuff.com
Repro steps:
1) save the code below to debugger.ipy
2) Run ipy.exe debugger.ipy
3) You should get a prompt to start debugging the code with your favorite debugger, accept it
4) The code should be stopped at the breakpoint, you can step forward with F10 and then F11
5) Trying to step into the call to the "add" method fails as described above
def add(a,b):
return a+b
import System.Diagnostics
System.Diagnostics.Debugger.Break()
print add(4, 4)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20070524/de7ecf3e/attachment.html>
More information about the Ironpython-users
mailing list