有没有办法为封闭网络获取整个平台的所有符号?

Is there a way to get all symbols for an entire platform for a closed-network?

我需要在 W2K8 R2 的封闭网络中调试内核转储。我尝试使用 "Windows 7 Service Pack 1 x64 retail symbols, all languages" 包下载 "Windows 7 and Windows Server 2008 R2" 符号 Microsoft

我刻录它,复制它,然后加载符号,WinDbg 声称它是 ntkrnlmp.pdb 的错误 PDB。所以这很好,除了我不想继续这样做来尝试找到要下载的正确包。

我开始研究这个问题,发现很多文章都在谈论如何让 symchk 递归地查看 Windows 或 System32 的本地目录以自动下载这些文件的 PDB。

但我需要能够下载所有 PDB 以获取与网络搜索不同的 OS:Windows 2008 R2,而不是 Win7。

有没有办法将 Windows 2008 R2 的所有可能符号下载到 Windows 7,以便它们可以 copied/burned 并最终在封闭网络上使用?

转储的所有符号

我使用的一种方法是下载转储所需的所有符号。这可以按如下方式完成:

  1. 在受限机器上创建一个符号列表
  2. 将列表复制到具有 Internet 连接的计算机
  3. 在有互联网连接的机器上下载所有符号
  4. 将符号复制回受限机器

这样你就不需要从受限机器上复制任何敏感信息(如转储)。

实现此目的的工具是 symchk,它随 WinDbg 一起提供。以下命令应该有效:

  1. symchk /id <dumpfile>.dmp /om symbols.lst
  2. 随心所欲
  3. symchk /im symbols.lst /s srv*X:\symbols\*http://msdl.microsoft.com/download/symbols /od
  4. 随心所欲(从X:\symbols复制符号)

参数为:

  • /id 输入是转储文件
  • /om 输出是一个清单文件
  • /im 输入是清单文件
  • /s 符号服务器
  • /od输出verbose看问题

Windows

的所有符号

可以使用相同的方法下载 OS 的所有符号。然后第 4 步的命令是

symchk /r /if %windir% /om symbols.lst

其中参数为:

  • /r递归
  • /if 从文件(或目录,如果递归)输入