Visual Studio调试器 - 自动变量分配

时间:2009-07-23 16:28:39

标签: visual-studio visual-studio-2008 debugging

我正在开发一个多开发人员项目,正在开发的应用程序是通过启动器应用程序启动的,该启动器应用程序传递用户登录的参数,它们的位置等。现在当我调试应用程序时,我设置了断点解析输入参数的代码,我分配用户名变量我的用户名等。

我可以对这些值进行硬编码,但是:

  • 我认为这是不好的做法。
  • 我担心文件会被检入我们的VCS并产生灾难性的连锁反应。
  • 多个开发人员正在研究这个项目,因此我的姓名难以编码,位置分配等不是真正的选择。
  • 我无法将文件设为只读文件,因为它处于活动开发状态,我不断需要获取所述文件的更新版本。

我的问题是:

  • 是否有内置方式或自动扩展,以便在调试模式下为变量赋值。现在我突出显示变量并输入我的文本,这可以自动化吗?

提前致谢

4 个答案:

答案 0 :(得分:1)

当我遇到这样的情况时,我通常会将条件编译和环境变量/ reg键组合在一起。您可以使用这些存储机制来托管您的信息,而无需将其硬编码到应用程序中。

#if DEBUG
if ( null != Environment.GetVariable("CUSTOM_INFO")) {
  userName = Environment.GetVariable("CUSTOM_USERNAME");
  ...
}
#endif

这样它不会影响任何其他开发人员。当然,除非他们想要完成同样的事情。

答案 1 :(得分:0)

添加到JaredPar的回复中,使该类成为部分。

这将使您保持主文件(已签入的文件)的更新。另一个文件(包含IF DEBUG的文件)将是本地&不会办理登机手续。

希望有所帮助。

答案 2 :(得分:0)

奇怪的问题。它是在狗生活之前发布的,但单元测试和测试驱动开发的概念早在2009年就已经很好地建立起来了。有了非常好的工具,比如nunit和testdriven.net。调试器不是正确使用的工具,只会产生白发。

答案 3 :(得分:0)

您可以使用跟踪点设置变量。

设置一个您不想设置变量的断点。右键单击红色字形并选择操作(从键盘上,您可以使用 alt + F9 c 和某些标签和空格键)。如显示的消息所示,您可以输入一个带有大括号的表达式的字符串。

例如:

2 + 2 = {2 + 2}

,将输出“ 2 + 2 = 4”。 在表达式中,您还可以分配变量:

{myVar = 5}

这确实具有将表达式的结果值打印到“输出窗口”的副作用。
为了避免这种情况,您可以为变量分配一个返回Void的辅助扩展方法:

public static class HelperFunctions
{
    public static void AssignTo<T>(this T value, out T variable)
    {
        variable = value;
    }
}

像这样使用

{"new value".AssignTo(out def)}

这只会将换行符输出到Ouput窗口(根据您的喜好,它可能会变糟或变坏)。

要在不污染输出窗口的情况下分配变量,如果可以在跟踪点的条件中分配变量,那就太好了,但是无论我尝试编写多少个辅助函数,都不会似乎不可能。我看起来好像条件表达式中的变量是沙盒,而动作消息表达式中的变量却没有。

编辑

在Visual Studio 2013中可以在断点条件下分配变量 ,但是在2019年,副作用(如变量分配)将被丢弃:https://developercommunity.visualstudio.com/content/problem/715716/variables-cannot-be-assigned-in-breakpoint-conditi.html