调试器启动失败

29

我目前正在尝试为从外部启动的进程(而不是从Visual Studio内部启动)启动调试器。 我似乎无法让调试器真正启动,因为似乎什么都没有发生。 在此过程中,我添加了以下代码:

Debug.Assert(Debugger.IsAttached == false, "Should be no debugger");
if (!Debugger.IsAttached)
{
    Debug.Assert(Debugger.Launch(), "Debugger not launched");
}
Debugger.Break();
Debug.Assert(Debugger.IsAttached == true, "Debugger should be attached");
断言是为了确认我的想法没有问题。最初,IsAttached属性像我预期的那样返回false。然后我调用Debugger.Launch,它返回true。根据Debugger.Launch的MSDN文档所说,它只有在成功启动调试器或已经附加了调试器时才会返回true。我验证了未附加任何调试器,所以肯定已经启动了一个调试器。
断点永远不会被触发,并且第二个验证失败(IsAttached属性返回false)。我还尝试在Debugger.Launch之后放置延迟一段时间,但没有效果。
有什么建议吗?

我已经编辑了你的标题。请参考“问题的标题应该包括“标签”吗?”,在那里共识是“不应该”。 - John Saunders
你的vsjitdebugger设置出了问题。尝试这个:http://social.msdn.microsoft.com/forums/en-US/vsdebug/thread/9a539c40-1869-44b8-9aed-9f9d7d402d7c/ 如果这不起作用,那么使用ProcMon并将好的机器与坏的机器进行比较。 - Hans Passant
了解标签的信息很有用。我会尝试一下Hans的文章,看看能找到什么。 - Trevor Sundberg
5个回答

30

我在使用Visual Studio 2013 Premium时也遇到了同样的问题。 Eric回答 帮我解决了这个问题。但是你不需要更改注册表。

  1. 进入工具 --> 选项 --> 调试
  2. 打开该项并选择“即时调试器”
  3. 如果您在窗口的下方看到有关正在使用与 Visual Studio 不同的其他调试程序的黄色警告,则请选中所有的即时调试复选框,以返回到 VS 作为调试程序。

就是这样!

选项-即时调试器


2
这对我有用。我几乎每天都在使用即时调试器,但有一天它停止工作并提到复选框未被选中 - 即某些东西禁用了它。虽然我不知道是什么禁用了它。 - Daniel Balas
还要检查Visual Studio是否安装了“即时调试器”。 - AmirHossein Rezaei

6

即使this文章说问题在VS2013中得到解决,但是如果你像我一样正在使用VS2013,请查找上面列出的临时修复选项卡来解决此问题。我使用它来解决了这个问题。更多信息请参见链接。

我只是链接另一篇文章,它让我走上了正确的方向,也许对你有用。

摘要:将Visual Studio即时调试器注册表键的AppIDFlags值从0x28更改为0x8(或根据上述文章为0x20,我猜是通过试错得出的)。注册表键为HKEY_CLASSES_ROOT\AppID\{E62A7A31-6025-408E-87F6-81AEB0DC9347}。


这对我在VS 2017专业版上有效!我将它从0x28更改为0x8。 - Tigerware
它也适用于VS 2012专业版。我将它从0x28改为0x8。谢谢! - TC55

5

也许这会帮助未来的某个人。我遇到了同样的问题,Debugger.Launch似乎没有任何反应。结果发现其他人已经登录了我的计算机,调试器附加提示在他们的环境中启动,而不是在我的环境中。我将他们踢出系统,这就解决了。


0
我的问题通过这里提到的一些方法(以及相关答案)得到了解决。也许这会帮助一些人更快地解决问题。
  1. 我在Visual Studio中看到,在“工具”>“选项”>“调试”>“即时”,所有三个选项都没有被选中,并且下面的“警告”显示为“另一个调试器已注册...”。将它们选中并保存并不能解决问题(无论是以管理员身份运行还是不是)。
  2. 当我运行Visual Studio安装程序时,我发现出于某种原因安装了“Visual Studio Build Tools 2017”(可能是我安装了但是忘记了)。我不需要它,所以我卸载了它并重新启动了电脑。
  3. 以管理员身份运行Visual Studio,选中了这三个选项,点击“确定”,问题就解决了。

0

在 VS 2019 中,首先要验证是否安装了即时调试器。

VS Installer

然后在选项中启用即时调试器

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接