无法中断执行。此进程当前未执行代码类型

时间:2015-12-16 12:49:18

标签: c++ visual-studio debugging

使用Visual Studio 2010时遇到一个奇怪的问题。

我正在运行一个DLL,它是从Microsoft IIS进程中的w3p.exe加载的。当我在另一台机器上启动远程调试器并在那里连接我的本地机器时,一切都很好,我可以调试。 问题是我在本地运行它。我知道DLL已加载(因为日志文件),我可以将调试器附加到进程。但是当我尝试Break all时,我收到错误说

  

无法中断执行。此过程当前未执行您选择调试的代码类型。

项目设置肯定指向刚编译正在运行的DLL的项目,因此我不太了解此错误消息。

当我设置断点时,没有任何反应。虽然附加了调试器,因为当我停止IIS时,我收到一条错误消息,告诉我需要首先停止调试器。

我使用故意应用程序错误fopen(NULL, NULL),这将允许我在调试版本中附加调试器。但这是相当不错的,因为在实际开始调试之前我必须手动清除调用堆栈。使用__debugbreak()没有帮助,所以我必须使用这种笨拙的解决方法。

那么有人可以告诉我为什么这种方法可以远程工作,但不能在本地工作吗?

1 个答案:

答案 0 :(得分:2)

所以我终于找到了解决问题的方法。

打开附加对话框时,会出现一个Attach to: Managed...选项,旁边有一个Select按钮。默认情况下,此设置为Managed (v4.0)。现在我添加了Native code,这解决了我的问题。我现在也可以在当地附上。

我肯定不明白为什么它在远程机器上工作,因为代码完全相同,所以不应该有这样的差异。