SymSetOptions 函数 (dbghelp.h)

设置选项掩码。

语法

DWORD IMAGEAPI SymSetOptions(
  [in] DWORD SymOptions
);

参数

[in] SymOptions

符号选项。 零是一个有效值,表示所有选项都已关闭。 使用 OR 运算符组合选项值以形成有效的选项值。 下面是有效的值。

Value 含义
SYMOPT_ALLOW_ABSOLUTE_SYMBOLS
0x00000800
允许使用与绝对地址一起存储的符号。 大多数符号存储为模块基部的 RVA。 DbgHelp 将它们转换为绝对地址。 有些符号存储为绝对地址。 它们具有非常专用的用途,通常不使用。

DbgHelp 5.1 及更早版本: 不支持此值。

SYMOPT_ALLOW_ZERO_ADDRESS
0x01000000
允许使用没有地址的符号。 默认情况下,DbgHelp 筛选掉没有地址的符号。
SYMOPT_AUTO_PUBLICS
0x00010000
在按地址搜索符号或枚举符号时,请勿搜索公共符号,除非它们在全局符号中或当前范围内未找到。 此选项对 SYMOPT_PUBLICS_ONLY不起作用。

DbgHelp 5.1 及更早版本: 不支持此值。

SYMOPT_CASE_INSENSITIVE
0x00000001
所有符号搜索均不区分大小写。
SYMOPT_DEBUG
0x80000000
通过 OutputDebugStringSymRegisterCallbackProc64 回调函数传递调试输出。
SYMOPT_DEFERRED_LOADS
0x00000004
在进行需要加载符号的引用之前,不会加载符号。 这是使用符号处理程序的最快、最有效的方法。
SYMOPT_DISABLE_SYMSRV_AUTODETECT
0x02000000
禁用符号路径中符号服务器存储的自动检测,即使没有“SRV*”指定,也保持与以前行为的兼容性。

DbgHelp 6.6 及更早版本: 不支持此值。

SYMOPT_EXACT_SYMBOLS
0x00000400
不要加载不匹配的 .pdb 文件。 如果所有其他操作都失败,请不要加载导出符号。
SYMOPT_FAIL_CRITICAL_ERRORS
0x00000200
当存在介质故障(例如驱动器中没有介质)时,不显示系统对话框。 相反,失败以无提示方式发生。
SYMOPT_FAVOR_COMPRESSED
0x00800000
如果同时存在未压缩文件和压缩文件,请优先使用压缩文件。 此选项适用于慢速连接。
SYMOPT_FLAT_DIRECTORY
0x00400000
符号存储在默认下游存储的根目录中。

DbgHelp 6.1 及更早版本: 不支持此值。

SYMOPT_IGNORE_CVREC
0x00000080
加载 .pdb 文件时,忽略图像标头的 CodeView 记录中的路径信息。
SYMOPT_IGNORE_IMAGEDIR
0x00200000
忽略映像目录。

DbgHelp 6.1 及更早版本: 不支持此值。

SYMOPT_IGNORE_NT_SYMPATH
0x00001000
如果用户在没有有效路径的情况下调用 SymSetSearchPath,请不要使用 _NT_SYMBOL_PATH 指定的路径。

DbgHelp 5.1: 不支持此值。

SYMOPT_INCLUDE_32BIT_MODULES
0x00002000
在 64 位 Windows 上进行调试时,包括任何 32 位模块。
SYMOPT_LOAD_ANYTHING
0x00000040
禁用检查以确保文件 (.exe、.dbg.或 .pdb) 是正确的文件。 而是加载找到的第一个文件。
SYMOPT_LOAD_LINES
0x00000010
加载行号信息。
SYMOPT_NO_CPP
0x00000008
包含符号分隔符“::”的所有 C++ 修饰符号将被“__”替换。 此选项适用于无法处理分析真实 C++ 符号名称的调试器。
SYMOPT_NO_IMAGE_SEARCH
0x00020000
如果无法读取模块标头,则加载模块的符号时,不要在图像中搜索符号路径。

DbgHelp 5.1: 不支持此值。

SYMOPT_NO_PROMPTS
0x00080000
防止从符号服务器提示验证。
SYMOPT_NO_PUBLICS
0x00008000
不要在 publics 表中搜索符号。 此选项效果不大,因为全局表中有公共符号的副本。

DbgHelp 5.1: 不支持此值。

SYMOPT_NO_UNQUALIFIED_LOADS
0x00000100
防止在调用方跨多个模块检查符号时加载符号。 仅检查已加载符号的模块。
SYMOPT_OVERWRITE
0x00100000
从符号存储覆盖下层存储。

DbgHelp 6.1 及更早版本: 不支持此值。

SYMOPT_PUBLICS_ONLY
0x00004000
请勿使用私有符号。 早期 Windows 版本附带的 DbgHelp 版本仅支持公共符号;此选项提供与此限制的兼容性。

DbgHelp 5.1: 不支持此值。

SYMOPT_SECURE
0x00040000
DbgHelp 不会加载 SymSrv 以外的任何符号服务器。 SymSrv 不会使用 _NT_SYMBOL_PATH 中指定的下游存储。 设置此标志后,无法清除它。

DbgHelp 6.0 和 6.1: 可以清除此标志。

DbgHelp 5.1: 不支持此值。

SYMOPT_UNDNAME
0x00000002
所有符号都以未修饰的形式显示。

此选项对全局或本地符号没有影响,因为它们是未修饰的存储。 此选项仅适用于公共符号。

返回值

函数返回当前选项掩码。

备注

当应用程序使用库时,选项值可以更改任意次数。 选项更改会影响将来对符号处理程序的所有调用。

若要获取当前选项掩码,请调用 SymGetOptions 函数。

所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。

示例

有关示例,请参阅 初始化符号处理程序

要求

   
目标平台 Windows
标头 dbghelp.h
Library Dbghelp.lib
DLL Dbghelp.dll
可再发行组件 DbgHelp.dll 5.1 或更高版本

请参阅

DbgHelp 函数

SymGetOptions