windows - 如何在封闭网络上操作和更新 Microsoft Windows 的符号服务器?

标签 windows debug-symbols

背景

在封闭网络(即没有互联网连接)上工作时,Microsoft 的公共(public)符号服务器在我的调试 session 期间不可用。我最感兴趣的是 Windows 系统库和 C 运行时库(例如 kernel32.dll、mscvrt100.dll)的调试符号。

我在封闭网络上创建了一个调试符号服务器,并使用来自 here 的调试符号包“植入”它。 .问题是随着 Windows 更新,一些二进制文件需要更新符号。我不知道有什么地方可以“整齐地”捆绑这些内容以供下载。我知道的唯一选择是使用 symchk在机器上的 Windows/system32 目录中下载将用于调试的所有符号,这既乏味又耗时。

问题

如何在封闭网络上操作和更新 Microsoft Windows 的符号服务器?有什么方法可以“镜像”所有 Windows 调试符号,这样您不仅可以获得版本和服务包的符号,还可以获得修补程序和汇总的符号?

最佳答案

填充“封闭网络符号”存储的另一种选择是以这种方式使用 symchk:

  • 继续目标机器(你想要符号的机器)。安装windbg并运行命令 symchk/r c:\windows\*.dll/om c:\symbols.txt

  • 在连接到互联网的机器上,检索生成的 symbols.txt 文件并使用相同的 symchk: symchk/im c:\temp\symbols.txt

第一步,symchk 将生成一个带有目标机器二进制文件签名的文本文件。在第二步中,读取此列表并且 symchk 实际上从 Microsoft 符号服务器检索 pdb 文件。

关于windows - 如何在封闭网络上操作和更新 Microsoft Windows 的符号服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471117/

相关文章:

linux - 如何使用调试版的 libc

ios - 符号化本地构建的 iOS 应用程序的崩溃日志

linux - 从 linux 共享库中剥离调试信息

c# - 如何从键盘上读取字符?

windows - 如何评估 Windows 环境变量?

windows - ghdl 不生成二进制文件 (windows)

iphone - 在 iOS 下,有没有办法确定崩溃报告中正在执行的架构?

python - 重定向输出时更改了 Windows 编码

c++ - 如何从 UDP 套接字 (Windows C++) 获取 IP 信息?

linux - 我在目标系统中生成了带有调试符号的 linux 核心转储。但是我无法在主机系统中使用 GDB 调试转储