当前不会命中断点 - 远程调试
Posted
技术标签:
【中文标题】当前不会命中断点 - 远程调试【英文标题】:The breakpoint will not currently be hit - Remote Debugging 【发布时间】:2015-12-28 01:06:04 【问题描述】:我在调试 DLL (C#) 时遇到问题。 DLL 在服务器上运行,我想使用 Visual Studio 2010 中的远程调试器工具对其进行调试。
我实际上可以附加到进程,但不知何故,我总是在断点处遇到以下问题: “当前不会命中断点。没有为此文档加载任何符号。”
编辑:.pdb 也在服务器上。
【问题讨论】:
您需要为您尝试调试的 DLL 提供相应的.pdb
文件。
对不起,我没有提到。 “.pdb”也在服务器上。
那么可能是VS没有找到它(我认为你可以通过一些设置指定.pdb
文件的实际位置)或者有时你需要自己编译DLL并使用那些.pdb
文件。
没有看到代码,很难判断,但是你确定代码是可访问的(即不在一个永远不会执行的分支中,因为它的计算结果为if (false)
)?
服务器 == 发布版本? VS能找到release build PDB吗?我个人认为它不会在服务器上找到它。在本地配置符号路径。
【参考方案1】:
您如何获取远程服务器上的 .pdb 和 .dll 文件?它们需要与您本地机器上的内容完全匹配。查看文件的大小并确保它们在远程服务器和本地计算机之间匹配。如果它们是在不同的机器上构建或使用不同的构建配置构建的,它们将不匹配。您可以将 bin 文件夹从本地计算机复制/粘贴到远程服务器,以确保文件完全匹配。 (先备份服务器的bin)
您是否参与了正确的流程?如果您不确定,请尝试附加到几个不同的进程。如果您的断点有效,那么这些新进程之一就是正确的。
尝试将远程服务器的 bin 文件夹添加为符号文件位置。这可以在选项 > 工具 > 调试 > 符号中完成。这将告诉 Visual Studio 检查该文件夹中的符号文件。
在遇到同样的问题后,我写了this blog post 关于这个,它可能有更多的信息会有所帮助。
【讨论】:
谢谢你,添加服务器的 bin 文件夹是关键 - 似乎没有其他人提到过! 我已将远程服务器上的bin
文件夹替换为我 PC 中的文件夹。否则documentation 提到我们必须完全从运行 Visual Studio 的 PC 发布源代码以进行远程调试。
可能,在.pdb
文件中不同路径的不同机器上编译符号(.dll、.pdb)是可以的。但它们必须具有相同的配置。 IE。调试或发布等以上是关于当前不会命中断点 - 远程调试的主要内容,如果未能解决你的问题,请参考以下文章