将 dotPeek 用作符号服务器
dotPeek 可以作为符号服务器运行,也就是说,它可以向调试器提供调试已编译程序集所需的信息。
与传统符号服务器(例如 Microsoft Symbol Server )不同,dotPeek 不存储任何符号文件,而是为请求的程序集生成 PDB 和源文件,并将其返回给调试器。
运行 dotPeek 符号服务器
点击工具栏上的 启动/停止符号服务器
。在主菜单中选择 。
首次启动 dotPeek 符号服务器时,系统会要求您选择要为其生成符号文件的程序集。 请参阅下文的 配置 dotPeek 符号服务器以了解配置选项。
dotPeek 符号服务器启动后,相应的图标会出现在状态栏中。 您可以将鼠标悬停在图标上以检查其地址和当前配置:

要使用 dotPeek 符号服务器,您可以在调试器设置中指定其地址。 在 Microsoft Visual Studio 中,配置如下:
设置 Visual Studio 以使用 dotPeek 符号服务器
在 Visual Studio 菜单中选择 。
点击 添加新位置 并为其指定以下地址: http://localhost:33417/ 。 (端口号可在 dotPeek 选项的 页面上配置。)

在 Visual Studio 选项中,转到 调试 | 常规 页面并清除 启用 Just My Code 复选框。
配置 dotPeek 符号服务器
dotPeek 符号服务器允许您选择要为其生成符号文件的确切程序集。 正确的配置可以防止您意外进入系统程序集或其他您不感兴趣的程序集。
从主菜单中选择 ,然后在左侧选择 。
使用单选按钮,在 生成符号文件 (.pdb) 用于 下选择一个选项。 前四个选项的含义显而易见。 最后一个选项提供了最大的灵活性——选择此选项后,您可以仅选择调试所需的程序集,并 在程序集资源管理器中打开它们。
您可以选择更改 dotPeek 符号服务器将使用的端口号。
点击 确定。
可能的问题及解决方案
如果 dotPeek 符号服务器出现问题,您可以首先打开 项目/PDB 生成状态 窗口(在 dotPeek 菜单中的 )。

在这里,您可以看到所有符号服务器任务以及 生成 PDB和 生成项目命令的结果。 如果调试器从 dotPeek 符号服务器请求了某些 PDB 但未生成,您将在此窗口中看到带有错误消息的相应条目:
问题通常发生在找不到目标程序集时。 为了解决此问题,您可以 在程序集资源管理器中打开该程序集。 如果您不知道程序集的位置,可以在 Visual Studio 处于调试模式时查看——打开 模块 窗口( )并检查 路径 列。
如果您在 64 位 Windows 上运行 dotPeek,请检查您是否运行的是 64 位版本的 dotPeek(安装目录 %LOCALAPPDATA%\JetBrains\Installations\dotPeek[N] 中有两个可执行文件—— dotPeek32.exe 和 dotPeek64.exe )。
如果请求的程序集未出现在项目/PDB 生成状态窗口中,这意味着调试器已经找到相应的符号文件,并未从 dotPeek 请求它。 如果符号文件正确且源代码可用,那么一切正常,程序集可以在不使用 dotPeek 的情况下进行调试。 如果不是,请尝试以下操作:
删除或重命名导致问题的 PDB 文件。 在 Visual Studio 处于调试模式时,您始终可以找到每个程序集的实际 PDB 文件位置(如果有)——打开 模块 窗口( )并检查 符号文件 列。
如果 PDB 文件是从其他符号服务器接收的,您可以禁用该服务器或将 dotPeek 符号服务器在符号服务器列表中上移(在 Visual Studio 选项中的 )。
在调试 优化的程序集时,某些调试器功能不可用,例如即使符号文件正确,您也无法看到局部变量的值。 因此,您可能需要禁用优化。
在 Visual Studio 处于调试模式时检查程序集是否已优化——打开 模块 窗口( )并检查 Optimized 列。
在 Visual Studio 选项中选择 在模块加载时禁止 JIT 优化 复选框()。
要禁用所有 NGEN(预 JIT)映像( *.ni.dll )的使用,您可以设置环境变量
COMPLUS_ZapDisable=1。 查看以下文章以获取示例和更多信息: