【问题标题】:Visual Studio Debugger - Automatic Variable AssignmentVisual Studio 调试器 - 自动变量分配
【发布时间】:2010-11-13 11:07:12
【问题描述】:

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

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

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

我的问题是:

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      添加到 JaredPar 的回复中,使课程部分化。

      这将使您保持主文件(被签入的文件)更新。另一个文件(包含 IF DEBUG 的文件)将是本地文件,不会被签入。

      希望对您有所帮助。

      【讨论】:

        【解决方案3】:

        奇怪的问题。早在 2009 年,它就已经发布了,但单元测试和测试驱动开发的概念已经很好地确立了。提供了优秀的工具,如 nunit 和 testdriven.net。调试器不是正确使用的工具,它只会产生白发。

        【讨论】:

        • Eyeh,但是对于运行整个系统,在您通过时插入值,测试框架往往做得不太好。或者至少我的印象是这样。我认为可以通过条件断点来做到这一点,但是 Green Hills 调试器有一个“跳转断点”,可以让您在断点被触发时跳过部分代码或设置条件。
        【解决方案4】:

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

        在您不想设置变量的地方设置断点。右键单击红色字形并选择操作(从键盘,您可以使用 alt+F9c 和一些 Tabs 和空格键操作)。作为要显示的消息,您可以输入带有要在花括号中执行的表达式的字符串。

        例如:

        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)}
        

        这只会在输出窗口中输出一个换行符(这可能不那么糟糕或更糟,具体取决于您的偏好)。

        要在不污染输出窗口的情况下分配一个变量,如果您可以在跟踪点的 Conditions 中分配一个变量,那就太好了,但是无论我尝试编制多少辅助函数,这都不会似乎不可能。 I 看起来好像 Condition 表达式中的变量是沙盒化的,而 Action 消息表达式中的变量不是。

         

        编辑

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-10
          • 1970-01-01
          • 2011-04-20
          • 2012-01-30
          • 1970-01-01
          • 2020-03-05
          • 1970-01-01
          • 2023-03-18
          相关资源
          最近更新 更多