VS调试器跳过基类中的ctors

时间:2017-07-08 15:02:50

标签: visual-studio visual-c++ visual-studio-debugging

似乎Visual Studio调试器(我已经检查过VS 2015和VS 2017)会跳过基类中的构造函数和赋值运算符。如果我使用以下代码创建一个新的C ++ Win32控制台应用程序项目

#include <iostream>

struct B
{
    B() { std::cout << "ctor"; }
};

struct S : B { };

int main()
{
    S s1;

    return 0;
}

我无法进入B :: B(),&#34; ctor&#34;打印,调试器转到&#34;返回0;&#34;线。在反汇编中,调用S :: S(01713D4h)&#34;之后是一段不归因于任何来源的代码(&#34;来源不可用&#34;):

00E51DF0  push        ebp  
00E51DF1  mov         ebp,esp  
00E51DF3  sub         esp,0CCh  
00E51DF9  push        ebx  
00E51DFA  push        esi  
00E51DFB  push        edi  
00E51DFC  push        ecx  
00E51DFD  lea         edi,[ebp-0CCh]  
00E51E03  mov         ecx,33h  
00E51E08  mov         eax,0CCCCCCCCh  
00E51E0D  rep stos    dword ptr es:[edi]  
00E51E0F  pop         ecx  
00E51E10  mov         dword ptr [this],ecx  
00E51E13  mov         ecx,dword ptr [this]  
00E51E16  call        B::B (0E51389h)  

如何进入B :: B()(不使用断点)?

1 个答案:

答案 0 :(得分:0)

我遇到了与您相同的问题,没有找到可能影响调试工具的VS设置,所以我帮助您在此处向产品团队报告此问题:

https://developercommunity.visualstudio.com/content/problem/77978/vs-debugger-skips-ctors-in-base-class.html

如果可能,您还可以添加评论并直接投票。如果我从产品团队获得任何更新,我将在此处分享。