[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


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).

Julien Couvreur

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

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