【问题标题】:How to change a variable value on conditional breakpoint in visual studio 2015如何在 Visual Studio 2015 中更改条件断点上的变量值
【发布时间】:2016-11-30 01:02:52
【问题描述】:

有没有办法将变量的值更改为条件断点并继续执行。

我的代码是这样的

switch(var){ //conditional breakpoint on this line
    case 1:
    break;
...
}

我设置了条件断点,如下所示 (var == 0 ) || (var ==1) 是真的

所以当这个断点命中时,我想更改var = 2,并继续执行。

我发现了什么:我也发现了 Action,但它只记录消息。有什么方法可以执行 var = 2 这样的语句作为在此条件断点上采取的操作。

我不想更改代码,因为构建它需要大量时间。

注意:我在 Visual Studio 2015 上使用 C++

【问题讨论】:

  • 添加该变量 (var) 以观察或悬停在它上面。您应该能够在调试时分配新值。
  • 快速查看让您可以显示任意表达式(如 x+1)。在 C++ 中,赋值被视为表达式。因此,请在快速观看中尝试您的作业。
  • 实际上我提到的代码是在循环下运行的,所以很多时候需要使用快速监视来更改值,我不想那样做。我正在寻找价值的自动变化

标签: c++ visual-studio visual-studio-2015 breakpoints


【解决方案1】:

将消息记录到输出窗口中写入{my_variable=12345},日志输出的副作用是将12345分配给my_variable

考虑到 Log a message 可以接受和评估花括号中的复杂表达式。

【讨论】:

    【解决方案2】:

    您可以直接在内存中修改变量,以通过 Visual Studio 中的 quick watch (Shift+F9) 或 watch 窗口更改执行流程。

    【讨论】:

    • 实际上我提到的代码是在循环下运行的,所以很多时候需要使用快速监视来更改值,我不想那样做。我正在寻找价值的自动变化
    • 我不认为有办法通过visual studio来做,但是你可以看看外部内存修改程序,比如Cheat Engine,或者自己写这样的工具
    【解决方案3】:

    确保在Tools / Options / Debugging 中您已启用/选中“启用编辑并继续”,然后您将能够在调试时编辑您的代码并继续,而无需重新构建或停止执行。

    更多信息可以在How to: Enable and Disable Edit and Continue找到

    【讨论】:

    • 当断点命中时,如果我添加新语句,如 var =2;那么VS将如何在不编译或链接的情况下继续执行该语句?我认为它会首先编译或构建新代码然后继续执行。
    • @ashish 我仍然不确定您为什么要以这种特殊方式调试代码。然后我建议使用var = 2 进行编译,然后在执行/循环期间您将能够将其更改为 1、3、4 等。
    • 实际上这段代码是在循环下运行的,我需要用许多不同的语句来调试它,所以我一直在寻找一些基于条件更新值的自动方法,也不需要一次又一次地编译。跨度>
    • 唯一的自动方式是自己编程。这就是程序员存在的原因.. 使事情自动化:)
    • 是的,现在我也有同样的想法,我需要为所有依赖条件编写额外的代码并相应地设置变量。
    【解决方案4】:

    这曾经可以工作,我现在似乎无法正常工作。在循环上表现出色,也适用于在不更改源或代码(并意外提交)的情况下更改值。

    Conditional break point, break if true
    
    (url = "http://localhost:1234/") != url
    

    这要归功于赋值总是返回它的赋值。这永远不会是真的,因为 url 变成了 localhost

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      相关资源
      最近更新 更多