Visual Studio 远程调试中未命中断点
Posted
技术标签:
【中文标题】Visual Studio 远程调试中未命中断点【英文标题】:Break point not hit in Visual Studio Remote Debugging 【发布时间】:2014-05-08 18:38:11 【问题描述】:请不要将其标记为重复 ..因为我已经看到了所有解决方案,但对我的情况没有任何效果..
我有两台机器 devMachine 和 serverMachine
在 devMachine 我正在使用 Visual Studio 开发应用程序,现在我有一个简单的 Console Application..我需要运行serverMachine 中的此 Console Application 并通过 Remote Debugging 从 devMachine 进行调试。
正如微软文档中所说,我在 serverMachine 中安装了 Remote Debugging tool 并将身份验证模式设置为 Native (No Authentication) 和在 serverMachine 中运行控制台应用程序。
现在,我在 devMachine 的 Visual Studio 中附加了远程进程。一切正常
但唯一的问题是 breakpoint 在 Visual Studio 中没有 hitting
注意:我已将所需的 .pdb 文件放在 serverMachine 中,并将该 .pdb 文件路径设置为devMachine 的 Visual Studio(Tools->Option->Debugging->Symbols)。
谁能帮我解决这个问题?
【问题讨论】:
相关帖子 - How do I remedy the “The breakpoint will not currently be hit. No symbols have been loaded for this document.” warning? & The breakpoint will not currently be hit. No symbols have been loaded for this document in a Silverlight application 【参考方案1】:断点上的错误消息说明了什么(如果您将鼠标悬停在断点上) - 它与源不同? --> 您可以尝试禁用(从工具/选项/调试) - 使源文件与原始版本完全匹配
“模块”窗口显示什么 - PDB 是否显示为已加载?如果没有,您是否尝试过手动加载它们(从“模块”窗口,右键单击 PDB 并加载)? - 如果失败,是否有错误消息?
--> 您可能会遇到本地计算机中的源文件与远程计算机上的源文件不同的情况。尝试复制所有内容,看看是否可行(PDB 与 EXE 位于同一文件夹中)
【讨论】:
当我尝试手动加载符号时,它说在此文件夹中找不到匹配的符号文件。你知道这意味着什么吗? @sky - 这意味着在该文件夹中找不到匹配的 PDB 文件 - 所以要么您指向错误的文件夹,要么您拥有的 PDB 文件版本不同作为您要调试的版本,您需要指向您要调试的版本 @Ghiondea 是的,你是对的。我已经想通了。还是谢谢大家。【参考方案2】:远程调试器不命中断点有两个原因
符号错误。
在调试时使用了错误的 .Net 框架(您可以在 Visual Studio 的“附加到进程”窗口中选择)。
【讨论】:
【参考方案3】:不要附加,只需打开远程调试。在后期构建期间将所有项目文件复制到服务器中相同放置和命名的文件夹中。
【讨论】:
【参考方案4】:我遇到了一个问题,即 Visual Studio 没有在我的断点处中断,尽管看起来 IIS 机器上的远程调试器的一切设置都正确。我到处寻找答案。当我尝试手动将 VS 调试附加到进程时,问题终于出现了(VS 菜单 --> 调试 --> 附加到进程...)由于某种原因,同一个应用程序池有多个进程(应该只有一个进程,不确定其他进程来自哪里)我登录到我的 IIS 服务器并杀死了我的应用程序池的所有进程,然后重新启动了 IIS 应用程序。当我看到应用程序池只有一个进程时(如我所料),我尝试在 Visual Studio 中进行调试,并将它附加到正确的进程。事实证明,当同一个应用程序池有多个进程时,它会附加到“错误”的那个。
【讨论】:
这个答案是正确的并且落入同一个循环中。一旦我为基于 .net framework 4.8 的 asp.net mvc 应用程序创建了一个指定的应用程序池,我确实摆脱了断点符号附近的警告,但 VS 仍然没有停止。可能是由于 Mvc.dll 或任何其他无法处理的 .net 库中的异常!【参考方案5】:查看您的屏幕截图,是否仅仅是因为断点位于“main”函数中,而该函数在您附加调试器之前可能已经完成?
建议: 也许在第一个断点上方的“main”中放置一些人为的等待/延迟代码,比如 20 秒,以便在“main”完成之前给自己足够的时间附加到进程。
【讨论】:
不,断点未激活,如带有黄色警告标志的空心圆圈所示。以上是关于Visual Studio 远程调试中未命中断点的主要内容,如果未能解决你的问题,请参考以下文章