我要做的是运行批处理脚本来更新.pdb文件以指向不同的源位置。我不确定是否有办法更新pdb文件中的绝对路径,但目前我正在考虑将源流插入pdb文件,以便调试器可以获取源文件。
我正在使用pdbstr.exe插入源流:
pdbstr -w -i:c:\test\pdbstream.txt -p:"C:\test\somelibrary.pdb" -s:srcrv
pdbstream.txt内容非常基本:
SRCSRV: ini ------------------------------------------------
VERSION=1
SRCSRV: variables ------------------------------------------
SRCSRVTRG=%var1%
SRCSRVCMD=cmd echo %var1% >> c:\test\output.txt
SRCSRV: source files ---------------------------------------
C:\somedifferentpath\somelibrary\sources\firstclass.cs
C:\somedifferentpath\somelibrary\sources\secondclass.cs
SRCSRV: end ------------------------------------------------
根据MSDN的信息,我只添加了必需的参数。据我所知,当调试器加载pdb文件并搜索源文件时,这应该在SRCSRVCMD变量中运行命令。所以我希望在c:\ test \ output.txt中有一些输出。
我已经验证为模块加载了正确的pdb文件,但是当我在Visual Studio中调试时,它找不到任何源文件。输出显示:
"SRCSRV: The module 'C:\test\somelibrary.dll' does not contain source server information."
源流无效,或者我只是忽略了一个特定的步骤?或者我可以在不插入数据流的情况下更改pdb文件中的绝对源位置吗?
修改
为了澄清,我目前正在使用Visual Studio调试器。我试图调试的代码是我自己创建的私有库。在将所有内容(dll,pdb和源文件)移动到磁盘上的其他位置后,我希望.pdb文件指向正确的源文件。