从 GAC 远程调试程序集
remotely debug assembly from GAC
我在 GAC 中为 Win10 机器上的 x86 注册了一个程序集。该程序集是为 .NET 4.5 编译的。现在,我正在尝试远程调试此程序集以确定客户的问题。
因此,我从程序集所在的主机启动了 msvmon.exe。我还在我的调试机器上安装了适当的 pdb 文件,并适当地设置了 Debug-->Options-->Debugging-->Symbols 指示的路径,如下图所示。
现在,当我在 "attach-to-process"-window 中键入 msvmon 运行 所在的主机名和端口,并在源代码中添加一个断点时,它没有被命中。特别是它指出 "no symbols are loaded for the current document".
另一方面,当我尝试调试不在 GAC 中的程序集时,我可以轻松调试它 - 即使我没有指定 pdb 文件的路径(我取消选中 pdb 位置从第一张图片来验证这一点)。因此,我很确定没有与网络相关的问题。
所以我想知道当程序集在 GAC 中注册时 VS 在哪里寻找 pdb 文件。
我也通过将 pdb 文件放入调试机器的 GAC 来解决这个问题。
因此,即使调试-->选项-->调试-->符号指示 pdb 文件的路径,这似乎也不适用于来自 GAC 的程序集。您必须将 pdb 文件放在程序集旁边。通常我们甚至不需要在我们的调试机器上组装。但是我不确定这是否也适用于这种情况。
无论如何,如果您在本地调试,这也适用。当程序集位于 GAC 中时,其 pdb 文件也需要保留在那里。
我在 GAC 中为 Win10 机器上的 x86 注册了一个程序集。该程序集是为 .NET 4.5 编译的。现在,我正在尝试远程调试此程序集以确定客户的问题。
因此,我从程序集所在的主机启动了 msvmon.exe。我还在我的调试机器上安装了适当的 pdb 文件,并适当地设置了 Debug-->Options-->Debugging-->Symbols 指示的路径,如下图所示。
现在,当我在 "attach-to-process"-window 中键入 msvmon 运行 所在的主机名和端口,并在源代码中添加一个断点时,它没有被命中。特别是它指出 "no symbols are loaded for the current document".
另一方面,当我尝试调试不在 GAC 中的程序集时,我可以轻松调试它 - 即使我没有指定 pdb 文件的路径(我取消选中 pdb 位置从第一张图片来验证这一点)。因此,我很确定没有与网络相关的问题。
所以我想知道当程序集在 GAC 中注册时 VS 在哪里寻找 pdb 文件。
我也通过将 pdb 文件放入调试机器的 GAC 来解决这个问题。
因此,即使调试-->选项-->调试-->符号指示 pdb 文件的路径,这似乎也不适用于来自 GAC 的程序集。您必须将 pdb 文件放在程序集旁边。通常我们甚至不需要在我们的调试机器上组装。但是我不确定这是否也适用于这种情况。
无论如何,如果您在本地调试,这也适用。当程序集位于 GAC 中时,其 pdb 文件也需要保留在那里。