(VisualStudio)如何管理IDE中的符号文件?
本文内容
适用范围:
Visual Studio
Visual Studio for Mac
Visual Studio Code
程序数据库 ( .pdb) 文件(也称为符号文件)将项目源代码中的标识符和语句映射到已编译应用中的相应标识符和说明。 这些映射文件将调试器链接到源代码,以进行调试。
使用标准调试生成配置从 Visual Studio IDE 生成项目时,编译器会创建相应的符号文件。 本文介绍了如何管理 IDE 中的符号文件,例如:
有关符号文件的详细说明,请参阅以下内容:
符号文件的工作方式
.pdb 文件保存调试和项目状态信息,使用这些信息可以对应用的调试配置进行增量链接。 在调试时,Visual Studio 调试器使用 .pdb 文件来确定两项关键信息:
符号文件还会显示源文件的位置,以及要从中检索它们的服务器(可选)。
调试器只会加载与在生成应用时创建的 .pdb 文件完全匹配的 .pdb 文件(即原始 .pdb 文件或副本) 。 这样的完全重复是必需的,因为即使代码本身未更改,应用的布局也可能会更改。 有关详细信息,请参阅 为什么 Visual Studio 要求调试器符号文件必须与同时生成的二进制文件完全匹配?
提示
要在项目源代码之外调试代码(如项目调用的 Windows 代码或第三方代码),则必须指定外部代码的 .pdb 文件(也可以是源文件)的位置,这些文件必须与应用中生成的文件完全匹配。
调试器查找符号的位置
在 Visual Studio IDE 中调试项目时,调试器默认情况下将自动加载可以找到的符号文件。
注意
在远程设备上调试托管代码时,所有符号文件必须位于本地计算机上,或者位于的位置。
调试器会在以下位置搜索符号文件:
项目文件夹。
在 DLL 或可执行 (.exe) 文件中指定的位置。
默认情况下文件里没有js文件 可是在调试器里有,如果你在计算机上已生成 DLL 或 .exe 文件,则链接器会将关联的 .pdb 文件的完整路径和文件名放入 DLL 或 .exe 文件中 。 调试器会检查该位置是否存在符号文件。
与 DLL 或 .exe 文件相同的文件夹。
在调试器选项中为符号文件指定的任何位置。 要添加并启用符号位置,请参阅。
配置符号文件的位置和加载选项
默认情况下,调试器会检查各种位置是否有符号。 请参阅。
在“工具”>“选项”>“调试”>“符号”页面,你可以执行以下操作:
指定符号位置和加载选项:
在 Visual Studio 中,打开“工具”>“选项”>“调试”>“符号”(或“调试”>“选项”>“符号”)。
在“符号文件(.pdb)位置”下,
(可选)要改进符号加载性能,请在“将符号缓存在此目录中”下,键入符号服务器可以将符号复制到的本地文件夹路径。
注意
不要将本地符号缓存放在一个受保护的文件夹中(例如 C:Windows 或子文件夹)。 而应使用可读写的文件夹。
注意
对于 C++ 项目,如果已设置 _NT_SYMBOL_PATH 环境变量,它会覆盖“将符号缓存在此目录中”下设置的值。
指定你希望调试器在启动时从“符号文件(.pdb)位置”加载的模块。
选择“确定”。
用于调试的其他符号选项
你可以在“工具”>“选项”>“调试”>“常规”(或者“调试”>“选项”>“常规”)中选择其他符号选项:
编译器符号选项
当你使用标准调试生成配置从 Visual Studio IDE 生成项目时,C++ 和托管编译器将为你的代码创建相应的符号文件。 你还可以在代码中设置编译器选项。
若要在 Visual Studio 中设置生成配置的编译器选项,请参阅设置调试和发布配置。
.NET 选项
使用 /debug 进行生成以创建 .pdb 文件。 可以使用 /debug:full 或 /debug:pdbonly生成应用程序。 使用 /debug:full 进行生成可以生成可调试的代码。 使用 /debug:pdbonly 进行生成可以生成 .pdb 文件,但不会生成通知 JIT 编译器调试信息可用的 DebuggableAttribute。 如果想为不希望其成为可调试的发布版本生成 .pdb文件,请使用 /debug:pdbonly。 有关详细信息,请参阅 /debug(C# 编译器选项)或 /debug (Visual Basic)。
C/C++ 选项
VC.pdb 文件和 project 链接器还在它创建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路径 。
DLL 导出表
使用 dumpbin /exports 查看 DLL 导出表中可用的符号。 DLL 导出表中的符号信息有助于处理 Windows 消息、Windows 过程 (WindowProc)、COM 对象、封送或不具有其符号的任何 DLL。 符号可用于任何 32 位系统 DLL。 调用将按调用顺序列出,当前函数(嵌套最深的函数)位于顶端。
通过读取 dumpbin /exports 输出,可以查看到精确的函数名,包括非字母数字字符。 查看精确函数名有助于在函数上设置断点,因为函数名可能会在调试器的其他位置截断。 有关详细信息,请参阅 dumpbin /exports。
Web 应用程序
将 ASP.NET 应用程序的 web.config 文件设置为调试模式。 调试模式将导致 ASP.NET 为动态生成的文件生成符号,并允许调试器附加到 ASP.NET 应用程序。 如果项目是通过 Web 项目模板创建的,则 Visual Studio 会在你开始调试时自动完成此设置。
调试时加载符号
你可以使用“模块”、“调用堆栈”、“本地”、“自动”或任何“监视”窗口在调试时加载符号或更改符号选项 。 有关详细信息,请参阅。
在“模块”窗口中处理符号
调试过程中,“模块”窗口会显示调试器视为用户代码(即我的代码)的代码模块以及其符号加载状态。 你还可以在“模块”窗口中监视符号加载状态、加载符号以及更改符号选项。
要在调试时监视或更改符号位置或选项:
若要在调试时打开“模块”窗口,请选择“调试” >“窗口”>“模块”(或按 Ctrl + Alt + U)。在“模块”窗口中,右键单击“符号状态”或“符号文件”标头,或单击任意模块 。在上下文菜单中,选择以下选项之一:选项描述
加载符号
对于具有跳过、未找到或未加载符号的模块显示。 尝试从“选项”>“调试”>“符号”页面中指定的位置加载符号 。 如果未找到或未加载符号文件,则启动“文件资源管理器”,以便你能够指定要搜索的新位置。
符号加载信息
显示已加载符号文件的位置或调试器无法找到文件时已搜索的位置。
符号设置
打开“选项”>“调试”>“符号”页面,你可以在其中编辑和添加符号位置 。
始终自动加载
将所选符号文件添加到由调试器自动加载的文件列表中。
使用“未加载符号/未加载源”页面
调试器可通过多种方式中断没有可用符号或源文件的代码:
出现上述情况时,调试器将显示“未加载符号”页面或“未加载源”页面,以帮助你查找和加载必需的符号或源 。
使用“未加载符号”文档页面来帮助查找并加载缺少的符号:
如果在执行其中一个选项后调试器找到 .pdb 文件,并且调试器可以使用 .pdb 文件中的信息检索源文件,则将显示源 。 否则,它会显示“未加载源”页面,页面中描述了问题并提供了指向可能解决该问题的操作链接。
将源文件搜索路径添加到解决方案:
你可以指定调试器搜索源文件的位置,并从搜索中排除特定的文件。
在“解决方案资源管理器”中选择解决方案,然后选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性” 。
选择“调试源文件”。
在“包含源代码的目录”中,键入或选择要搜索的源代码位置。 使用“新建行”图标可添加更多位置,使用向上和向下箭头图标可对这些位置重新排序文件里没有js文件 可是在调试器里有,使用 X 图标可删除这些位置 。
注意
调试器只搜索指定的目录。 你必须为要搜索的任何子目录添加项。
在“不查找这些源文件”中,键入要从搜索中排除的源文件的名称。
选择“确定”或“应用” 。
请参阅
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
酷小呵
4天前
不错,用上了