我正在尝试调试一个故意在依赖库中引发异常的小型应用程序。我为两者都构建了代码,但我在一个我没有用来构建依赖库的工作站上进行调试。在我的小型构建过程中,我有一个步骤可以为依赖库索引源和发布符号(使用 vNext 构建系统)。
我希望能够调试并进入依赖库的代码。我的期望是标记到 pdb 文件中的索引信息将允许“即时”获取源代码文件。
pdb 文件在 vNext 构建过程中成功上传到源服务器,并且 pdb 文件从我在 Visual Studio 中根据 Debug -> Windows -> Modules 指定的符号缓存目录成功加载。
我的应用程序故意抛出异常,因此调试器将有一些东西要闯入。当它发生时,我看到堆栈跟踪中的代码,所以我知道符号正在正确加载。当我双击堆栈跟踪中的那个条目时,我没有被带到源头。
由于索引信息,我本来希望 Visual Studio 获取源代码,但我看到了一个文件浏览对话框。请注意,我使用的是 Visual Studio 2017。
这是 pdb 文件中的索引信息(显示 pdb 已正确索引):
------------------------------------------------
VERSION=3
INDEXVERSION=2
VERCTRL=Team Foundation Server
DATETIME=Thu Mar 08 15:58:40 2018
INDEXER=TFSTB
SRCSRV: variables ------------------------------------------
TFS_EXTRACT_CMD=tf.exe view /version:%var4% /noprompt "$%var3%" /server:%fnvar%(%var2%) /console > %SRCSRVTRG%
TFS_EXTRACT_TARGET=%targ%\%var2%%fnbksl%(%var3%)\%var4%\%fnfile%(%var5%)
SRCSRVVERCTRL=tfs
SRCSRVERRDESC=access
SRCSRVERRVAR=var2
VSTFSSERVER=REDACTED
SRCSRVTRG=%TFS_EXTRACT_TARGET%
SRCSRVCMD=%TFS_EXTRACT_CMD%
SRCSRV: source files ---------------------------------------
C:\Resources\agent\_work\6\s\REDACTED\AppDomainLogger.cs*VSTFSSERVER*/REDACTED/AppDomainLogger.cs*77776*AppDomainLogger.cs
C:\Resources\agent\_work\6\s\REDACTED\CustomLogger.cs*VSTFSSERVER*/REDACTED/CustomLogger.cs*77776*CustomLogger.cs
SRCSRV: end ------------------------------------------------
请注意,我已经编辑了一些信息,这只是我不想透露的路径信息和服务器名称,但它们是正确的。如果VSTSSERVER的值和源代码的值都正确,为什么我调试的时候源代码拉不上来。我不确定源代码路径中的这些数字是什么,而且我没有看到任何登录凭据来登录 tfs 服务器。但是,由于我已经通过使用 Visual Studio 的方式连接到 TFS,我想也许不需要凭据?我的构建过程目前没有标记源......这可能是问题的一部分吗?
我对此有点新(尝试在调试期间使用源信息)。让我知道我是否遗漏了什么,如果我遗漏了,我该如何补救这种情况。
在将 Visual Studio 附加到应用程序之前,我确实选中了 Debug -> Options -> General -> Enable Source Server Support(这是两个子复选框)。