在未执行实际行的情况下触发VisualStudio断点

问题描述

我在虚幻引擎4中有一个项目,并且正在Visual Studio 2019中调试游戏代码。在某些情况下会遇到断点,但我认为代码并未真正执行。你能告诉我这怎么可能吗?

1   void UTrace::DrawDebug()
2   {
3       for (TPair<Vector2DTuple,int> edge : EdgesMap)
4       {
5           Vector2DTuple vertices = edge.Key;
6           FVector source = FVector(*vertices.Key,0.f);
7           FVector target = FVector(*vertices.Value,0.f);     
8
9           DrawDebugLine(GetWorld(),source,target,FColor::Black,false,-1.f,-1,3.f);
10          UE_LOG(LogTemp,Warning,TEXT("%f %f %f"),source.X,source.Y,source.Z);
11          UE_LOG(LogTemp,target.X,target.Y,target.Z);
12          UE_LOG(LogTemp,TEXT("-------"));
13      }
14  }

我在第9行和第11行有一个断点。在游戏模式运行时中,在EdgesMap中填充了某些元素后,第9行的断点被击中。 此时,变量似乎尚未初始化。

local variables on breakpoint is hit for the first time

然后按F5键继续执行程序,然后在第9行(而不是我认为的第11行)再次命中断点。并且其中一个已初始化变量,另一个未初始化。

local variables on breakpoint is hit for the second time

然后继续执行程序,并在第9行再次击中断点,到目前为止,尚未执行任何UE_LOG。

local variables on breakpoint is hit for the third time

此后,我继续执行程序,最后找到第11行的断点,并在控制台中以正确初始化的变量(x = 150,y = 650)登录一个。>

问题:

  • 这是某种奇怪的Visual Studio行为还是我的代码中的某些错误
  • 如何判断该行是否真正执行?
  • 它是否以某种方式与局部变量的初始化相关?

观察:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)