不会为 slc.dll 和 sppc.dll 加载调试符号

Posted

技术标签:

【中文标题】不会为 slc.dll 和 sppc.dll 加载调试符号【英文标题】:Debug symbols won't load for slc.dll and sppc.dll 【发布时间】:2016-01-28 21:36:40 【问题描述】:

这是我的情况。我正在尝试在远程服务器(Windows 2012 R2 Standard)上调试 WCF 服务。我在运行 Visual Studio 12 的 Windows 7 Professional 系统上。在弄清楚如何安装远程调试器并连接到它之后,我收到了 Symbols not loaded 错误。找到模块窗口后,我发现我只找到了 93 个 PDB 文件中的 4 个(我的项目 PDB)。经过大量研究,我在选项菜单中发现了符号窗口,并确保我设置了缓存符号目录并将 Microsoft 符号服务器作为我的位置之一。单击加载所有符号后,VS 2012 加载了除 sppc.pdb 和 slc.pdb 这两个文件之外的所有文件。

我已运行 symchk . /r 并收到以下输出:

C:\Program Files\Debugging Tools for Windows (x64)>symchk *.* /r

SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 221

另一个论坛上的某个人建议使用 symchk 命令尝试专门从 Microsoft Symbol 服务器加载 PDB 文件。因此,当我运行时,我得到了以下信息:

SYMCHK: slc.dll              FAILED  - slc.pdb mismatched or not found

所以我检查了我是否正确使用它。我运行以下命令并将许多 PDB 下载到临时目录中,但不是我需要的:

C:\Program Files\Debugging Tools for Windows (x64)>symchk /r C:\windows\system32 /s srv*C:\Temp\Symbols*http://msdl.microsoft.com/download/symbols

*** Some output removed for brevity  ***

SYMCHK: slc.dll              FAILED  - slc.pdb mismatched or not found
SYMCHK: snacnp.dll           FAILED  - SnacNp.pdb mismatched or not found
SYMCHK: sppc.dll             FAILED  - sppc.pdb mismatched or not found

所以我详细地对其中一个文件运行了 syschk,看看它是否能告诉我任何信息:

C:\Program Files\Debugging Tools for Windows (x64)>symchk /v C:\windows\system32\slc.dll
[SYMCHK] Searching for symbols to C:\windows\system32\slc.dll in path C:\Temp\Symbols
DBGHELP: Symbol Search Path: C:\Temp\Symbols
[SYMCHK] Using search path "C:\Temp\Symbols"
DBGHELP: No header for C:\windows\system32\slc.dll.  Searching for image on disk

DBGHELP: C:\windows\system32\slc.dll - OK
SYMSRV:  C:\Temp\Symbols\slc.pdb\BEC5C21CFFE144E48E70042F52FF1D271\slc.pdb not found
DBGHELP: slc - no symbols loaded
[SYMCHK] MODULE64 Info ----------------------
[SYMCHK] Struct size: 1680 bytes
[SYMCHK] Base: 0x000007FF70190000
[SYMCHK] Image size: 45056 bytes
[SYMCHK] Date: 0x4a5be063
[SYMCHK] Checksum: 0x00011b30
[SYMCHK] NumSyms: 0
[SYMCHK] SymType: SymNone
[SYMCHK] ModName: slc
[SYMCHK] ImageName: C:\windows\system32\slc.dll
[SYMCHK] LoadedImage: C:\windows\system32\slc.dll
[SYMCHK] PDB: ""
[SYMCHK] CV: RSDS
[SYMCHK] CV DWORD: 0x53445352
[SYMCHK] CV Data:  slc.pdb
[SYMCHK] PDB Sig:  0
[SYMCHK] PDB7 Sig: 00000000-0000-0000-0000-000000000000
[SYMCHK] Age: 0
[SYMCHK] PDB Matched:  TRUE
[SYMCHK] DBG Matched:  TRUE
[SYMCHK] Line nubmers: FALSE
[SYMCHK] Global syms:  FALSE
[SYMCHK] Type Info:    FALSE
[SYMCHK] ------------------------------------
SymbolCheckVersion  0x00000002
Result              0x00010001
DbgFilename         slc.dbg 
DbgTimeDateStamp    0x00000000
DbgSizeOfImage      0x00000000
DbgChecksum         0x00000000
PdbFilename         slc.pdb
PdbSignature        BEC5C21C-FFE1-44E4-8E70-042F52FF1D27
PdbDbiAge           0x00000001
[SYMCHK] [ 0x00000000 - 0x00010001 ] Checked "C:\windows\system32\slc.dll"
SYMCHK: slc.dll              FAILED  - slc.pdb mismatched or not found

SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 0

我知道这些文件是软件许可客户​​端的一部分,虽然我不知道为什么需要加载它们来进行调试,但事实是 VS 想要它。

有人知道如何获取 PDB 或抑制加载符号文件的需要吗?

【问题讨论】:

【参考方案1】:

Microsoft 不提供 SLC 的 PDB 以防止创建破解来激活 Windows。

运行VS2012,转到Options->Debugging->autoamtically load symbols for: "all symbols, unless excluded"。单击蓝色链接并将 SLC 添加到排除列表。

现在 VS 跳过加载 PDB。

【讨论】:

感谢您的回复。我已经尝试了您的步骤,并且所有文件的状态为已加载符号或已被包含/排除禁用加载。但是断点仍然不会加载,因为“没有为此文档加载任何符号 发布一些错误图片。也许你混合了发布/调试配置

以上是关于不会为 slc.dll 和 sppc.dll 加载调试符号的主要内容,如果未能解决你的问题,请参考以下文章

QT UI 转换为 python,但图像不会加载

Django 不会为某些测试用例重新加载夹具

UITableView 不会在使用 NSFetchedResultsController 更改模型时重新加载

“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?

VS 2010 远程调试器断点当前不会被命中。没有为此文档加载任何符号

修改行数组时,Swift 2数据不会重新加载数据