【问题标题】:Visual Studio 2019: Break points do not breakVisual Studio 2019:断点不会中断
【发布时间】:2020-07-03 08:11:47
【问题描述】:

我在 Visual Studio 中有一个非常奇怪的行为,我无法解释。

在一个更大的项目中,我有一个类,看起来像这样:

Public Class DatabaseDescription
    Inherits DatabaseDescriptor

    Private _tableNames As List(Of String)

    ...

    Public ReadOnly Property TableNames As IEnumerable(Of String)
        Get
            If (_tableNames Is Nothing) Then
                _tableNames = Me.GetTableNames
            End If

            Return _tableNames
        End Get
    End Property

    Private Function GetTableNames() As IEnumerable(Of String)
        Dim result As New List(Of String)

        ...

        Stop
        Debug.Print("Hallo")

        ...

        result.Add(tableName & "_Test")

        ...
        Return result
    End Function

    ...

End Class

类变量_tableNames只用在属性TableNames中,别处没有。

我在一开始就在函数GetTableNames 中设置了一个断点,所以,如果这个函数被调用,我的断点应该被击中。

我在属性TableNames的开头设置了一个断点。

我在函数GetTableNames 中添加了一个明确的Stop 和一个Debug.Print

我为每个表名添加了一个“_Test”,以确保我使用的是正确的代码。

你猜怎么着……当我运行我的代码时,TableNames 被填满,而我的断点从未被击中。显式的Stop 也不起作用。但是我看到了我的Debug.Print,并且每个表名的末尾都有一个“_Test”。

我的解决方案中的所有项目都处于调试配置中。当我从输出文件夹中删除有问题的库时,它会重新创建。重新启动 Visual Studio 也无济于事。将“_Test”更改为“_Test2”并更改Debug.Print 文本会立即生效,但断点和显式Stop 将不起作用。当我第一次故意访问时,同一类中的其他断点,甚至是属性中的断点。

有什么想法吗?

【问题讨论】:

    标签: visual-studio-2019


    【解决方案1】:

    显然,由于 Intellisense 的原因,Visual Studio 的某些特性或功能获得了 TableNames 的值,因此它们可能会忽略断点或显式 Stops。

    关闭几个 Visual Studios 窗口(如“Watch”、“Local”或“Diagnostic Tools”)后,问题消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多