www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 11902] New: DMD debuginfo doesn't seem to write classes correctly

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

           Summary: DMD debuginfo doesn't seem to write classes correctly
           Product: D
           Version: D2
          Platform: x86_64
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: turkeyman gmail.com


--- Comment #0 from Manu <turkeyman gmail.com> 2014-01-11 00:22:08 PST ---
DMD-Win64:

While debugging in Visual Studio, inspecting classes doesn't seem to work
properly.

Hovering over a class instance:
  It shows the class pointer correctly.
  Clicking '+' to reveal the members shows a list with the correct number of
members...
  But each member shows "?" as the member name, and doesn't show any value to
the right, and a little red "No Entry" symbol if you hover over it.

Pasting into the watch window just shows a blank line for each member.

Bonus: The implicit typeinfo and vtable pointers should be present in the class
too

Tested with VS2010.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 11 2014
next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902


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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |r.sagitario gmx.de


--- Comment #1 from Rainer Schuetze <r.sagitario gmx.de> 2014-01-11 00:39:45
PST ---
The problem is that the VS debugger is confused by '.' in type names. That is
why cv2pdb translates these to ' '.

So far, Walter rejected the proposal to also do this translation in the Win64
debug output.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 11 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #2 from Manu <turkeyman gmail.com> 2014-01-11 01:22:48 PST ---
Well I think he needs to come up with something if not that, because it can't
go on not being able to inspect classes.
Do you know any workarounds?

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 11 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902


Vladimir Panteleev <thecybershadow gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow gmail.com


--- Comment #3 from Vladimir Panteleev <thecybershadow gmail.com> 2014-01-11
11:29:36 EET ---
(In reply to comment #1)
 The problem is that the VS debugger is confused by '.' in type names. That is
 why cv2pdb translates these to ' '.

Sorry if this is a dumb question, but would : or :: (as for C++) work instead? is an unusual character to delimit namespace path components... -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 11 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #4 from Rainer Schuetze <r.sagitario gmx.de> 2014-01-11 01:55:01
PST ---
(In reply to comment #2)
 Well I think he needs to come up with something if not that, because it can't
 go on not being able to inspect classes.
 Do you know any workarounds?

One point in Walter's favor is that VS2012 contains two debug engines, one that works with '.', but fails to display other things locals in watches. The other is the "old" engine that needs the patch (enabled by "native edit and continue"). So it seems like the bug is in the VS engine, not dmd, but that doesn't help in making it work. I don't know other workarounds. IIRC ':' doesn't work. cv2pdb has option -s to configure the '.' replacement character, so you can try some alternatives using a win32 build. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 11 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #5 from Manu <turkeyman gmail.com> 2014-01-17 04:51:34 PST ---
(In reply to comment #4)
 One point in Walter's favor is that VS2012 contains two debug engines, one that
 works with '.', but fails to display other things locals in watches. The other
 is the "old" engine that needs the patch (enabled by "native edit and
 continue"). So it seems like the bug is in the VS engine, not dmd, but that
 doesn't help in making it work.

Well, considering that we have no control over VS, and it needs to work, I suggest the patch be available under a compiler flag? Then VisualD can pass the appropriate flag implicitly depending which version of Visual Studio it detects the user is running. We need to make the windows debugging environment seamless, and I think Walter still agrees on that. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 17 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #6 from Manu <turkeyman gmail.com> 2014-01-21 17:16:10 PST ---
Walter: can you please chime in on this one?
It's a massive hole in the windows debugging experience, and it would be
super-awesome if a fix can get in on DMD 2.065...

I have a lot of classes, and 'this' is almost always a class, so I'm getting
very little value out of the debugger at the moment.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 21 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla digitalmars.com


--- Comment #7 from Walter Bright <bugzilla digitalmars.com> 2014-01-21
21:02:06 PST ---
I do agree that we're forced to live with any bugs in VS. Even if Microsoft
fixes them, those fixes often don't wind up on users' machines.

If   is the only thing that will work across the VS versions, I'll pull
Rainer's patch for it. I just think it's painfully ugly.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 21 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #8 from Manu <turkeyman gmail.com> 2014-01-22 01:44:34 PST ---
(In reply to comment #7)
 I do agree that we're forced to live with any bugs in VS. Even if Microsoft
 fixes them, those fixes often don't wind up on users' machines.
 
 If   is the only thing that will work across the VS versions, I'll pull
 Rainer's patch for it. I just think it's painfully ugly.

Does it make sense to activate it on a compile flag, then VD can supply it when it needs to? If there are differences between the 2 debug engines, then it makes sense to support the newer debug engine one by default, and the old one on a compile flag, especially since VS2008-2010 are still in very common use. I'm sure Rainer knows the most appropriate way to handle these problems. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 22 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902


Benjamin Thaut <code benjamin-thaut.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code benjamin-thaut.de


--- Comment #9 from Benjamin Thaut <code benjamin-thaut.de> 2014-01-22 01:59:10
PST ---
I think it would be good to actuvate the   mangling with a compiler flag.
64-bit support is currenlty beeing built into Mago
(http://dsource.org/projects/mago_debugger). As soon as this is done and its
fully working, I would think that mago will be the primary choice to debug D on
Windows within Visual Studio, as it supports D specific debugging features
(e.g. evaluating D expressions). And as soon as mago becomes the defacto
standard for debugging the   mangling is no longer needed. So adding a switch
as temporary solution might be the best choice.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 22 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #10 from Manu <turkeyman gmail.com> 2014-02-19 05:51:05 PST ---
Is a solution for this going to make it into 2.065?
This is the biggest problem with debugging DMD code at the moment.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 19 2014
prev sibling next sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #11 from Benjamin Thaut <code benjamin-thaut.de> 2014-02-19
09:19:50 PST ---
https://github.com/D-Programming-Language/dmd/pull/3189

I honestly don't think that my two pull requests will make it in time for
2.065, especially as 2.065 is already in the release canidate phase.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 19 2014
prev sibling parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #12 from Manu <turkeyman gmail.com> 2014-02-19 09:28:54 PST ---
(In reply to comment #11)
 https://github.com/D-Programming-Language/dmd/pull/3189
 
 I honestly don't think that my two pull requests will make it in time for
 2.065, especially as 2.065 is already in the release canidate phase.

Yeah. That's a shame. I think this is pretty critical. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 19 2014