每次遇到断点时,我都需要输入一个特定的变量值,但是手动输入它们非常耗时,有没有更快的方法?代码不能修改。理想情况下,如果有另一个Visual Studio应用程序可以将值提供给其他Visual Studio C++ Locals窗口,那就太好了。最简单的方法是什么?
4jb9z9bj1#
使用调试器断点动作功能。动作对话框建议它只能用于在输出窗口中打印消息,但{...}之间的任何表达式都将被计算,因此它可以用于强制变量或调用函数等。范例:1.首先创建一个断点并右键单击它,然后选择“操作...":x1c 0d1x1.根据需要设置操作:本例中为{i = i == 10 ? 99990 : i}。1.运行
{...}
{i = i == 10 ? 99990 : i}
的这里,当i == 10i被设置为99990时,在这种情况下在循环中向前跳过。我尝试将它与断点条件结合使用,但无法使其以预期的方式工作; YMMV。你可以通过调用action表达式中的函数来执行更复杂的操作。例如,给定一个函数:
i == 10
i
int test( int i ) { return i == 10 ? 99990 : i; }
字符串你可以从action表达式中调用它:{i=test(i)}。在这个例子中,它没有做更多的事情,但是演示了一个函数可以被调用。这个函数当然可以做更多的事情。如果你想将一系列测试值注入到一个变量中,你可以使用一个action表达式:{i = getTestData()},其中getTestData()是一个函数 * 你 * 编写并链接到测试代码。例如,它可以从一个文件中读取一系列值。当然,测试函数需要在断点位置的范围内,这通常需要修改代码以包含头文件、原型或实际函数。然后,所有的测试激励文件可以在单独链接的模块中,代码本身不需要修改测试。请注意,在频繁调用时,命中断点计算操作表达式并继续将显著降低执行速度。
{i=test(i)}
{i = getTestData()}
getTestData()
1条答案
按热度按时间4jb9z9bj1#
使用调试器断点动作功能。动作对话框建议它只能用于在输出窗口中打印消息,但
{...}
之间的任何表达式都将被计算,因此它可以用于强制变量或调用函数等。范例:
1.首先创建一个断点并右键单击它,然后选择“操作...":x1c 0d1x
1.根据需要设置操作:本例中为
{i = i == 10 ? 99990 : i}
。1.运行
的
这里,当
i == 10
i
被设置为99990时,在这种情况下在循环中向前跳过。我尝试将它与断点条件结合使用,但无法使其以预期的方式工作; YMMV。
你可以通过调用action表达式中的函数来执行更复杂的操作。例如,给定一个函数:
字符串
你可以从action表达式中调用它:
{i=test(i)}
。在这个例子中,它没有做更多的事情,但是演示了一个函数可以被调用。这个函数当然可以做更多的事情。如果你想将一系列测试值注入到一个变量中,你可以使用一个action表达式:
{i = getTestData()}
,其中getTestData()
是一个函数 * 你 * 编写并链接到测试代码。例如,它可以从一个文件中读取一系列值。当然,测试函数需要在断点位置的范围内,这通常需要修改代码以包含头文件、原型或实际函数。
然后,所有的测试激励文件可以在单独链接的模块中,代码本身不需要修改测试。
请注意,在频繁调用时,命中断点计算操作表达式并继续将显著降低执行速度。