[Issue 19719] New: Debugging string mixins using -mixin doesn't work

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Mar 6 07:57:33 UTC 2019


https://issues.dlang.org/show_bug.cgi?id=19719

          Issue ID: 19719
           Summary: Debugging string mixins using -mixin doesn't work
           Product: D
           Version: D2
          Hardware: All
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: r.sagitario at gmx.de

Stepping through mixin code in the debugger using -mixin doesn't work on
Windows. 

For COFF, no debug line info is emitted if it is from a different file than the
one containing the function declaration.

For OMF, there are instructions without any source code when switching from one
file to another causing the VS debugger to not show any code or step out of the
function. For example, this function

void fun()
{
    mixin("int a = 0;
           int z = 1;
           int y = a + z;
           a = y + z;");
}

disssembles as

void fun()
0040224c  enter 0xc, 0x0 
--- No source file
-------------------------------------------------------------
00402250  push ebx 
--- C:\test\WindowsApp1.mixin 
// expansion at WindowsApp1.d(14)
int a = 0;
00402251  xor eax, eax 
00402253  mov [ebp-0xc], eax 
                  int z = 1;
00402256  mov ecx, 0x1 
0040225b  mov [ebp-0x8], ecx 
                  int y = a + z;
0040225e  lea edx, [eax+ecx] 
00402261  mov [ebp-0x4], edx 
                  a = y + z;
00402264  lea ebx, [edx+ecx] 
--- No source file
-------------------------------------------------------------
00402267  mov [ebp-0xc], ebx 
--- C:\test\WindowsApp1.d ---------
}

void fun()
{
        mixin("int a = 0;
                  int z = 1;
                  int y = a + z;
                  a = y + z;");
}
0040226a  pop ebx 
--- No source file
-------------------------------------------------------------
0040226b  leave 
0040226c  ret 
0040226d  int3 
0040226e  int3 
0040226f  int3

--


More information about the Digitalmars-d-bugs mailing list