【问题标题】:Visual Studio Debugger is Stepping Over/Out of LoopVisual Studio 调试器正在单步执行/跳出循环
【发布时间】:2015-03-03 18:28:27
【问题描述】:

我有以下代码来清理我的服务器上的一组目录。我正在尝试单步执行代码以验证它是否有效,但在调试器中出现了奇怪的行为。我在第一行放置一个断点,然后按 F8 单步执行。当它到达 for 循环时,它会碰到第一个 if 语句一次,然后跳出循环。 for 循环正在迭代的集合中有 4 个项目,我希望我能够单步执行循环并观察它对集合中的每个项目所做的事情,但事实并非如此。有什么想法吗?

这里是有问题的代码块:

Dim Dirs As New Collection(Of DirectoryInfo)
Dirs.Add(New DirectoryInfo(HttpContext.Current.Server.MapPath("../PDFS/Reports/")))
Dirs.Add(New DirectoryInfo(HttpContext.Current.Server.MapPath("../PDFS/Statements/")))
Dirs.Add(New DirectoryInfo(HttpContext.Current.Server.MapPath("../PDFS/HistoryStatements/")))
Dirs.Add(New DirectoryInfo(HttpContext.Current.Server.MapPath("../PDFS/ReminderStatements/")))

    For Each di As DirectoryInfo In Dirs
        If di.Exists Then

            CleanDir(di, 60)

            'Remove all previews
            If Directory.Exists(di.FullName & "Preview") Then
                Dim dPreview As New DirectoryInfo(di.FullName & "Preview")
                CleanDir(dPreview, 1)
            End If

        End If
    Next

【问题讨论】:

  • 在其中抛出 Try/Catch 以检查错误。
  • 在“输出”窗口中查找“第一次机会异常”通知。不要将这种代码放在 Load 事件中。
  • 我最终发现,没有一个 di.Exists 检查会返回 true,它们都是无效目录。一旦我将目录信息更改为指向实际目录,调试器就会正确地单步执行代码。我不完全确定它为什么会这样工作,我希望它能够逐步完成并能够观察它评估每个项目。

标签: vb.net debugging visual-studio-2012


【解决方案1】:

我最终发现,没有一个 di.Exists 检查会返回 true,它们都是无效目录。一旦我将目录信息更改为指向实际目录,调试器就会正确地单步执行代码。我不完全确定它为什么会这样工作,我希望它能够逐步完成并能够观察它评估每个项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多