使用 SrcSrv
若要将 SrcSrv 与 WinDbg、KD、NTSD 或 CDB 配合使用,请验证是否已安装最新版本的 Windows 调试工具 包 (版本 6.3 或更高版本) 。 然后,在源路径中包括文本 srv*
,用分号分隔也位于源路径中的任何目录。
例如:
.srcpath srv*;c:\someSourceCode
如果源路径如前面的示例所示设置,则调试器首先使用 SrcSrv 从目标模块的符号文件中指定的位置检索源文件。 如果 SrcSrv 无法检索源文件,调试器会尝试从 c:\someSourceCode 检索它。 无论 srv* 是路径中的第一个元素还是稍后出现,调试器始终在搜索路径中列出的任何其他目录之前使用 SymSrv。
如果 源文件由 SrcSrv 检索,则调试会话结束后,该文件将保留在硬盘驱动器上。 源文件存储在主目录的 src 子目录中, (与符号服务器不同,源服务器不会在 srv*
语法本身) 指定本地缓存。 主目录默认为适用于 Windows 的调试工具安装目录;可以使用 !homedir 扩展或设置DBGHELP_HOMEDIR环境变量来更改它。 如果主目录的 src 子目录尚不存在,则会创建它。
调试 SrcSrv
如果在从调试器中提取源文件时遇到问题,请使用 -n 命令行参数启动调试器,以查看实际的源提取命令以及这些命令的输出。 !sym noisy 命令执行相同的操作,但你可能已经错过了以前尝试提取的重要信息。 这是因为调试器放弃尝试从似乎无法访问的版本控制存储库访问源。
检索源文件
如果使用 .open (Open Source File) 命令通过 SrcSrv 打开新的源文件,则必须包含 -m Address 参数。
为了便于从前面列出的调试器以外的工具使用 SrcSrv,DbgHelp API 通过 SymGetSourceFile 函数提供对 SrcSrv 功能的访问权限。 若要检索要检索的源文件的名称,请调用 SymEnumSourceFiles 或 SymGetLineFromAddr64 函数。 有关 DbgHelp API 的更多详细信息,请参阅 dbghelp.chm 文档,该文档可以在 Windows 安装目录的调试工具的 sdk/help 子目录中找到,或参阅 调试帮助库。
使用 AgeStore 减小缓存大小
调试会话结束后, SrcSrv 下载的任何源文件都保留在硬盘驱动器上。 若要控制源缓存的大小,可以使用 AgeStore 工具删除早于指定日期的缓存文件,或将缓存内容减少到指定大小以下。 有关详细信息,请参阅 AgeStore。