调试 - Step Into(F11)不直接进入该功能

时间:2018-05-31 04:34:09

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

当我调试我的代码时,我在一条线路上调用我创建的函数(爆炸):

pmin

在这一行中,我希望调试器进入“爆炸”状态。功能。

然而,当按下F11时,调试器会经历来自v <- c(0,1,0,1,2,3,0,5,6,7,5) pmin(v, 2) # [1] 0 1 0 1 2 2 0 2 2 2 2 和其他文件的数百行,所以只有在完成所有这些旅程之后,才能进入我的“爆炸”状态。功能

为什么会这样?

如何避免这种情况? F11可能直接用于我的功能而不是漫步&#39;通过所有这些中介?

1 个答案:

答案 0 :(得分:2)

好吧,一个原因是你的explode函数接受另一种类型的参数(例如std::string),如果你执行 F11 ,它本身会调用许多函数。

通常,在这种情况下,当您输入一个功能时,您不想跟踪使用 Shift + F11 (步出),这样您就可以直接返回到主叫站点然后重复该操作对于任何其他中间呼叫。在某些情况下, F10 可以减少步数。

有时候你可以通过使用一些临时变量来修改代码,使其更适合于调试例程。

另一种方法是在explode函数中放置一个断点。但是,只有在您感兴趣的呼叫之前只有几个呼叫时,这才能正常工作。有时,您可以在断点或呼叫者位置设置条件。其他时候,在第一个断点被击中时设置第二个断点也可以。

通过这样的一些技巧,您可以大大减少额外步骤的数量。

如果您不需要它们,也可以限制可见的调试窗口数量,因为有些调试窗口相对较慢(例如线程),有时没有它们,您只需按F11几次直到达到所需的功能。