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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Julien Couvreur
Sent: Wednesday, May 23, 2007 1:04 PM
To: [email protected]
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)
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com