似乎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()(不使用断点)?
答案 0 :(得分:0)
我遇到了与您相同的问题,没有找到可能影响调试工具的VS设置,所以我帮助您在此处向产品团队报告此问题:
如果可能,您还可以添加评论并直接投票。如果我从产品团队获得任何更新,我将在此处分享。