【问题标题】:How to modify value of variable automatically at runtime when hitting a breakpoint and continuing execution in VS?在VS中遇到断点并继续执行时,如何在运行时自动修改变量的值?
【发布时间】:2018-03-15 12:04:41
【问题描述】:

我们可以通过更改变量工具提示或本地/自动/监视窗口来手动更改值。 但我想将变量的值自动更改为某个特定的硬编码值或基于代码 sn-p。 例如-

int main()
{
int a=0,b=1,c=2;
//bla bla
for(int i=0; i<100; ++i)
{
executeMe();
}
//bla bla
}

我想在“executeMe()”行设置一个断点并将“b”的值更改为硬编码值 3 或基于变量值“c”,因此执行指令“b=c”。并继续执行,而不会每次都在断点处停止。 在 VS 中如何做到这一点?

【问题讨论】:

  • 你能从Wendy的建议中得到有用的信息吗?或者你可以考虑使用条件断点:blogs.msdn.microsoft.com/devops/2014/10/06/…。所以你可以控制断点何时被击中。
  • 能否请您分享一下您身边的最新信息?条件断点或自定义代码是你的路径吗?
  • @JackZhai-MSFT stackoverflow.com/a/15415763/2328412 Tom McKeown 的这个回答帮助了我。
  • 如果可能,您可以将解决方案分享为答案,然后在两天后将其标记,这样也可以帮助遇到相同问题的其他社区成员。祝你有美好的一天:)

标签: c++ visual-studio debugging watch


【解决方案1】:

使用“打印消息:”选项而不是宏。代码中的值可以通过将它们放在 {} 中来打印。关键是 VS 也会将内容评估为表达式 - 因此 {variable_name=0} 应该实现与宏示例相同的效果。

感谢 Tom McKeown 在 stackoverflow.com/a/15415763/2328412 上提供此解决方案

【讨论】:

    【解决方案2】:

    您可以使用#if 预处理器指令,与下面的代码类似。

            int a = 0, b = 1, c = 2;
            for (int i = 0; i < 100; ++i)
            {
    #if DEBUG
                b=3;
    #endif
                executeMe();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2017-10-11
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多