似乎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(),将打印“ ctor”,并且调试器将转到“ return 0;”。 线。 在反汇编中,“调用S :: S(01713D4h)”后面是一段未归属于任何源的代码(“源不可用”):

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 已采纳

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

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

如果可能的话,您也可以添加评论并直接对该报告进行投票。 如果我从产品团队获得任何更新,我将在这里分享。

  ask by Evg translate from so

未解决问题?本站智能推荐: