符号选项
有许多选项可用于控制如何加载和使用符号。 可以通过多种方式设置这些选项。
下表列出了这些符号选项:
标志 | 选项名称 | 调试器中的默认值 | DBH 中的默认值 |
---|---|---|---|
0x1 |
启用 |
开 |
|
0x2 |
启用 |
开 |
|
0x4 |
开 |
关闭 |
|
0x8 |
关闭 |
关闭 |
|
0x10 |
在 KD 和 CDB 中关闭 在 WinDbg 中打开 |
开 |
|
0x20 |
开 |
关闭 |
|
0x40 |
关闭 |
关闭 |
|
0x80 |
关闭 |
关闭 |
|
0x100 |
关闭 |
关闭 |
|
0x200 |
开 |
关闭 |
|
0x400 |
关闭 |
启用 |
|
0x800 |
关闭 |
启用 |
|
0x1000 |
关闭 |
关闭 |
|
0x2000 |
SYMOPT_INCLUDE_32BIT_MODULES |
关闭 |
关闭 |
0x4000 |
关闭 |
关闭 |
|
0x8000 |
关闭 |
关闭 |
|
0x10000 |
启用 |
开 |
|
0x20000 |
开 |
关闭 |
|
0x40000 |
关闭 |
关闭 |
|
0x80000 |
在 KD 和 CDB 中打开 在 WinDbg 中关闭 |
关 |
|
0x80000000 |
关闭 |
关闭 |
更改符号选项设置
.symopt (设置符号选项) 命令可用于更改或显示符号选项设置。 此外,许多命令行参数和命令可用于更改这些设置;这些列在单独的 SYMOPT_XXX 节中。
还可以使用 -sflags命令行选项一次性控制所有设置。 此选项后面可以跟一个十进制数,也可以后跟一个以 0x 为前缀的十六进制数。 建议使用十六进制,因为符号标志以这种方式正确对齐。 使用此方法时请谨慎,因为它设置整个位域,并会替代所有符号处理程序默认值。 例如, -sflags 0x401 不仅会打开SYMOPT_EXACT_SYMBOLS和SYMOPT_CASE_INSENSITIVE,而且还会关闭默认情况下打开的所有其他选项!
当启动这些程序时,总标志位的默认值在 WinDbg 中0x30237,在 CDB 和 KD 中0xB0227,在 DBH 工具中0x10C13。
SYMOPT_CASE_INSENSITIVE
此符号选项会导致所有对符号名称的搜索不区分大小写。
默认情况下,此选项在所有调试器中处于打开状态。 调试器运行后,可以分别使用 .symopt+0x1 或 .symopt-0x1 打开或关闭它。
默认情况下,此选项在 DBH 中处于打开状态。 运行 DBH 后,可以分别使用 symopt +1 或 symopt -1 打开或关闭它。
SYMOPT_UNDNAME
此符号选项会导致公共符号名称在显示时取消修饰,并导致对符号名称的搜索忽略符号修饰。 无论此选项是否处于活动状态,都不会修饰私有符号名称。 有关符号名称修饰的信息,请参阅 公共符号和专用符号。
默认情况下,此选项在所有调试器中处于打开状态。 调试器运行后,可以分别使用 .symopt+0x2 或 .symopt-0x2打开或关闭调试器。
默认情况下,此选项在 DBH 中处于打开状态。 如果使用 -d 命令行选项,则会关闭它。 运行 DBH 后,可以分别使用 symopt +2 或 symopt -2 打开或关闭它。
SYMOPT_DEFERRED_LOADS
此符号选项称为 延迟符号加载 或 延迟符号加载。 当它处于活动状态时,在加载目标模块时不会实际加载符号。 相反,调试器会根据需要加载符号。 有关详细信息 ,请参阅延迟符号加载 。
默认情况下,此选项在所有调试器中处于打开状态。 在 CDB 和 KD 中,-s 命令行选项将关闭此选项。 也可以使用 tools.ini文件中的 LazyLoad 变量在 CDB 中将其关闭。 调试器运行后,可以分别使用 .symopt+0x4 或 .symopt-0x4打开或关闭此选项。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +4 或 symopt -4 打开或关闭它。
SYMOPT_NO_CPP
此符号选项关闭 C++ 转换。 设置此符号选项后,在所有符号中将 替换为__ : 。
默认情况下,此选项在所有调试器中处于关闭状态。 可以使用 -snc 命令行选项激活它。 调试器运行后,可以分别使用 .symopt+0x8 或 .symopt-0x8 将其打开或关闭。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +8 或 symopt -8 打开或关闭它。
SYMOPT_LOAD_LINES
此符号选项允许从源文件中读取行号信息。 必须启用此选项,源调试才能正常工作。
在 KD 和 CDB 中,此选项默认处于关闭状态;在 WinDbg 中,此选项默认处于打开状态。 在 CDB 和 KD 中,-lines 命令行选项将打开此选项。 调试器运行后,可以分别使用 .symopt+0x10 或 .symopt-0x10 打开或关闭调试器。 也可以使用 .lines (切换源行支持) 命令打开和关闭它。
默认情况下,此选项在 DBH 中处于打开状态。 运行 DBH 后,可以分别使用 symopt +10 或 symopt -10 将其打开或关闭。
SYMOPT_OMAP_FIND_NEAREST
如果代码已优化,并且预期位置没有符号,则此选项会导致改用最近的符号。
默认情况下,此选项在所有调试器中处于打开状态。 调试器运行后,可以分别使用 .symopt+0x20 或 .symopt-0x20 打开或关闭它。
默认情况下,此选项在 DBH 中处于打开状态。 运行 DBH 后,可以分别使用 symopt +20 或 symopt -20 将其打开或关闭。
SYMOPT_LOAD_ANYTHING
当尝试匹配符号时,此符号选项可降低符号处理程序的挑剔度。
默认情况下,此选项在所有调试器中处于关闭状态。 调试器运行后,可以分别使用 .symopt+0x40 或 .symopt-0x40打开或关闭调试器。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +40 或 symopt -40 打开或关闭它。
SYMOPT_IGNORE_CVREC
此符号选项会导致符号处理程序在搜索符号时忽略已加载图像标头中的 CV 记录。
默认情况下,此选项在所有调试器中处于关闭状态。 可以使用 -sicv 命令行选项激活它。 调试器运行后,可以分别使用 .symopt+0x80 或 .symopt-0x80打开或关闭它。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +80 或 symopt -80 将其打开或关闭。
SYMOPT_NO_UNQUALIFIED_LOADS
此符号选项禁用符号处理程序自动加载模块。 当设置此选项并且调试器尝试匹配符号时,它将仅搜索已加载的模块。
此选项可用于防止符号名称错误。 通常,键入错误的符号将导致调试器在搜索所有卸载的符号文件时暂停。 当此选项处于活动状态时,在加载的模块中找不到键入错误的符号,然后搜索将终止。
默认情况下,此选项在所有调试器中处于关闭状态。 可以使用 -snul 命令行选项激活它。 调试器运行后,可以分别使用 .symopt+0x100 或 .symopt-0x100 打开或关闭调试器。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +100 或 symopt -100 打开或关闭它。
SYMOPT_FAIL_CRITICAL_ERRORS
此符号选项会导致禁止显示文件访问错误对话框。
如果此选项处于关闭状态,则符号加载期间遇到的文件访问错误(如“驱动器未就绪”)将导致出现对话框。 如果此选项处于打开状态,则会取消这些框,并且所有访问错误都会收到“失败”响应。
默认情况下,此选项在所有调试器中处于打开状态。 可以使用 -sdce 命令行选项将其停用。 调试器运行后,可以分别使用 .symopt+0x200 或 .symopt-0x200 打开或关闭调试器。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +200 或 symopt -200 将其打开或关闭。
SYMOPT_EXACT_SYMBOLS
此符号选项使调试器对所有符号文件执行严格评估。
启用此选项时,即使符号文件与符号处理程序的期望之间的细微差异也会导致忽略符号。
默认情况下,此选项在所有调试器中处于关闭状态。 可以使用 -ses 命令行选项激活它。 调试器运行后,可以分别使用 .symopt+0x400 或 .symopt-0x400打开或关闭它。
-failinc 命令行选项还会打开SYMOPT_EXACT_SYMBOLS。 此外,如果要调试用户模式小型转储或内核模式微型转储,-failinc 将阻止调试器加载无法映射其映像的任何模块。
默认情况下,此选项在 DBH 中处于打开状态。 运行 DBH 后,可以分别使用 symopt +400 或 symopt -400 打开或关闭它。
SYMOPT_ALLOW_ABSOLUTE_SYMBOLS
此符号选项允许 DbgHelp 读取存储在内存中的绝对地址处的符号。 大多数情况下不需要此选项。
默认情况下,此选项在所有调试器中处于关闭状态。 调试器运行后,可以分别使用 .symopt+0x800 或 .symopt-0x800 打开或关闭调试器。
默认情况下,此选项在 DBH 中处于打开状态。 运行 DBH 后,可以分别使用 symopt +800 或 symopt -800 打开或关闭它。
SYMOPT_IGNORE_NT_SYMPATH
此符号选项会导致调试器忽略符号路径和可执行映像路径的环境变量设置。
默认情况下,此选项在所有调试器中处于关闭状态。 可以使用 -sins 命令行选项激活它。 但是,调试器一旦运行,它就不能由 .symopt 控制,因为环境变量仅在启动时读取。
此选项在 DBH 中默认处于关闭状态,DBH 在所有情况下都会忽略此选项。
SYMOPT_PUBLICS_ONLY
此符号选项会导致 DbgHelp 忽略私有符号数据,并仅搜索公共符号表以获取符号信息。 这会在添加对这些类型的支持之前模拟 DbgHelp 的行为。 请参阅 公共符号和专用符号。
默认情况下,此选项在所有调试器中处于关闭状态。 调试器运行后,可以分别使用 .symopt+0x4000 或 .symopt-0x4000 打开或关闭它。
默认情况下,此选项在 DBH 中处于关闭状态。 如果使用 -d 命令行选项,则启用此选项。 运行 DBH 后,可以分别使用 symopt +4000 或 symopt -4000 将其打开或关闭。
SYMOPT_NO_PUBLICS
此符号选项阻止 DbgHelp 搜索公共符号表。 这可以加快符号枚举和符号搜索的速度。 如果只关心搜索速度,则SYMOPT_AUTO_PUBLICS选项通常优于此选项。 有关公共符号表的信息,请参阅 公共符号和专用符号。
默认情况下,此选项在所有调试器中处于关闭状态。 调试器运行后,可以分别使用 .symopt+0x8000 或 .symopt-0x8000 将其打开或关闭。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +8000 或 symopt -8000 将其打开或关闭。
SYMOPT_AUTO_PUBLICS
此符号选项导致 DbgHelp 仅作为最后手段搜索 .pdb 文件中的公共符号表。 如果在搜索私有符号数据时找到任何匹配项,则不会搜索公共符号。 这可以提高符号搜索速度。
默认情况下,此选项在所有调试器中处于打开状态。 可以使用 -sup 命令行选项将其停用。 调试器运行后,可以分别使用 .symopt+0x10000 或 .symopt-0x10000打开或关闭它。
默认情况下,此选项在 DBH 中处于打开状态。 如果使用 -d 命令行选项,则会关闭它。 运行 DBH 后,可以分别使用 symopt +10000 或 symopt -10000 打开或关闭它。
SYMOPT_NO_IMAGE_SEARCH
此符号选项可防止 DbgHelp 在加载符号时在磁盘中搜索映像的副本。
默认情况下,此选项在所有调试器中处于打开状态。 调试器运行后,可以分别使用 .symopt+0x20000 或 .symopt-0x20000 打开或关闭它。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +20000 或 symopt -20000 打开或关闭它。
SYMOPT_SECURE
仅 (内核模式) 此符号选项指示 安全模式 是否处于活动状态。
在所有调试器中,安全模式默认处于关闭状态。 可以使用 -secure 命令行选项激活它。 如果调试器正在运行、处于休眠模式且尚未建立任何调试服务器,则可以使用 .symopt+0x40000 或 .secure (激活安全模式) 打开安全模式 。
默认情况下,此选项在 DBH 中处于关闭状态。 DBH 运行后,可以分别使用 symopt +40000 或 symopt -40000 将其打开或关闭。
安全模式在激活后永远无法关闭。
SYMOPT_NO_PROMPTS
此符号选项禁止来自代理服务器的身份验证对话框。 这可能会导致 SymSrv 无法访问 Internet 上的符号存储。
有关详细信息,请参阅 防火墙和代理服务器。
在 KD 和 CDB 中,此选项默认处于打开状态;在 WinDbg 中,此选项默认处于关闭状态。 调试器运行后,可以分别使用 .symopt+0x80000 或 . symopt-0x80000打开或关闭它,然后使用 .reload (Reload Module) 命令。 还可以使用 !sym 提示关闭 和 !sym 提示 扩展命令打开和关闭它,后跟 .reload (Reload Module) 命令。
默认情况下,此选项在 DBH 中处于关闭状态。 运行 DBH 后,可以分别使用 symopt +80000 或 symopt -80000 打开或关闭它。
-SYMOPT_DEBUG
此符号选项启用 干扰符号加载。 这会指示调试器显示有关其搜索符号的信息。
每个符号文件的名称将在加载时显示。 如果调试器无法加载符号文件,它将显示错误消息。 .pdb 文件的错误消息将显示在文本中。 .dbg 文件的错误消息将以错误代码的形式显示;winerror.h 文件中介绍了这些代码。
如果只是为了恢复符号标头信息而加载图像文件,则也会显示此信息。
默认情况下,此选项在所有调试器中处于关闭状态。 可以使用 -n 命令行选项激活它。 调试器运行后,可以分别使用 .symopt+0x80000000 或 .symopt-0x80000000打开或关闭它。 还可以通过使用 !sym noisy 和 !sym quiet 扩展命令来打开和关闭它。
注意 不应将此选项与干扰 源 加载混淆,该加载由 .srcnoisy (干扰源加载) 命令控制。
默认情况下,此选项在 DBH 中处于关闭状态。 可以使用 -n 命令行选项激活它。 运行 DBH 后,可以分别使用 symopt +80000000 或 symopt -80000000 将其打开或关闭。 还可以通过使用详细打开和详细关闭命令来打开和关闭它。