[Issue 18881] New: extern(C++) classes don't work properly in debuginfo
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun May 20 01:11:45 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18881
Issue ID: 18881
Summary: extern(C++) classes don't work properly in debuginfo
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: enhancement
Priority: P1
Component: visuald
Assignee: nobody at puremagic.com
Reporter: turkeyman at gmail.com
Here's a test class:
--------------------------------------------
extern(C++) class BaseCPP
{
~this() {}
void poo() {}
int x = 10;
int y = 20;
}
extern(C++) class DerivedCPP : BaseCPP
{
int z;
}
void main()
{
DerivedCPP d = new DerivedCPP;
BaseCPP b = d;
int x = 10; // PLACE BREAKPOINT HERE
}
--------------------------------------------
At the breakpoint, inspect the value of 'b'.
You should expect to see:
- b 0x0073fb2c {z=0} BaseCPP* {DerivedCPP}
+ [DerivedCPP] {z=0} DerivedCPP
+ __vfptr 0x00394c50 {DerivedCPP.__vftable} void**
x 10 int
y 20 int
But instead, there is only the 2 members of BaseCPP: `x` and `y`.
extern(C++) classes are missing their type, entry to get from base-class
pointer to the most-derived type, and the vtable.
C++ populates the class with all this information, so extern(C++) classes
should be able to show the exact same set of members as when debugging in C++?
--
More information about the Digitalmars-d-bugs
mailing list