【问题标题】:Debugging TFS workflow with Visual Studio使用 Visual Studio 调试 TFS 工作流
【发布时间】:2014-04-23 13:18:43
【问题描述】:

我正在尝试使用 Visual Studio 逐步完成 TFS 工作流构建过程。我已经关注了许多行会如何设置它。我已经尝试在 TFS 2010、TFS 2012 和 TFS 2013 上进行远程调试和本地调试。它们中的每一个都未能达到工作流中设置的断点(使用它们各自的工作流和 Visual Studio 版本)。

目前在 TFS 2013 工作流程中,调试输出正在向以下内容发送垃圾邮件(重复大约 100 多次);

A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll  

正在加载调试符号;

TFSBuildServiceHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', Symbols loaded.

在其他每一次运行中,我都会得到以下写入调试:

Step into: Stepping over method without symbols 'System.Threading.ExecutionContext.RunInternal'

用于此的符号未列为正在加载。

正如how to setup TFS workflow debugging 指南中所列,我将调试器附加到 TFSBuildServiceHost.exe 进程。在本地和远程,此构建代理链接到同一个 TFS 服务器。然后我运行构建并且没有遇到断点。

我还设置了 Visual Studio 调试器以从 microsoft 符号服务器加载符号并将它们存储在本地目录中。

通过 Visual Studio 调试 TFS 工作流的最终方法是什么?

【问题讨论】:

  • 我也没有完全做到这一点,但对于我的目的来说已经足够了。执行并没有在我的 xaml 断点处停止,但我正在调试一个自定义活动,所以 VS 最终向我展示了我的自定义活动中的哪一行导致了什么异常,这足以解决和解决我的问题。无论如何,我发现的一件事是我需要以管理员身份运行 VS。这可能与您的情况有关吗? UnauthorizedAccessException 让我这么想。

标签: visual-studio debugging tfs visual-studio-2013


【解决方案1】:

对于您上面链接到的文章,必须在 Run on Agent 序列之前放置一个断点。如果这样放置断点,则 Run on Agent 序列中的断点也会被命中。

但是,我发现很难找到有用的信息。一个名为 debugInfo 类型为 System.Activities.Debugger.DebugInfo 的变量出现在 Locals 窗口中,它提供了一些信息。

更新:

看起来变量和流程参数可以在以下位置找到:

调试信息->

非公共成员 ->

活动实例->

非公共成员 ->

System.Activities.Runtime.ActivityInstanceMap.IActivityReference.Activity ->

Microsoft.TeamFoundation.Build.Workflow.Activities.AgentScope ->

变量。

我猜测调试到自定义活动将使用这种在 Run on Agent 序列之前和所需位置设置断点的方法,但我还没有尝试过。

此外,单步执行时,必须使用 Step Into 命令而不是 Continue 或 Step Over,因为使用后两个命令会导致执行完成而不是在断点处停止(至少在我的设置中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2014-08-14
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多