www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 3657] New: No lexical scope for local variables in debug info

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3657

           Summary: No lexical scope for local variables in debug info
           Product: D
           Version: unspecified
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: r.sagitario gmx.de


--- Comment #0 from Rainer Schuetze <r.sagitario gmx.de> 2009-12-29 02:47:59
PST ---
Consider

import std.stdio;

void main()
{
   for(int i = 0; i < 10; i++)
      writefln("1 - %d", i);

   for(int i = 0; i < 10; i++)
      writefln("2 - %d", i);
}

This declares two different variables "i", but the debugger only shows the
value of the first variable, even while stepping through the second loop. (The
list of local variables does show two variables "i".)

This is caused by DMD not emitting any life time info of local variables.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 29 2009
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3657



--- Comment #1 from Rainer Schuetze <r.sagitario gmx.de> 2009-12-29 02:57:56
PST ---
Created an attachment (id=536)
add lexical scope to local symbols in codeview debug info

The patch consists of two parts:
1. modify the parser to remember the end of scope statements.
2. transfer the life-time info to the debug info.

The latter is straight forward, but the second part is a bit complicated. 

As scoping information is lost in the code generation, only the line of
declaration and the end of the enclosing scope is remembered by the symbol. The
life-time of the variable in terms of code byte offset and length is then
reconstructed from the line number info. This is only implemented for CodeView
information, as I don't know anything about the other formats.

Another complication: optlink removes the corresponding debug entries, so I had
to use pseudo-symbols to get this info to cv2pdb and convert them back there.
This might confuse other tools, so maybe this feature should be enabled by some
command line switch only.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 29 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3657


Rainer Schuetze <r.sagitario gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
           Priority|P2                          |P3


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 29 2009