应用程序无法在调试器中启动

时间:2010-01-23 12:37:19

标签: c++ visual-studio debugging visual-studio-2005

我正在使用的应用程序无法在Visual Studio 2005的调试器中启动。

这就是我的所作所为:

  • 我重建了应用程序并按F5启动它
  • VS2005窗口的标题是“projectname(Running)...”
  • 显示调试器按钮但显示为灰色
  • 应用程序出现在Windows任务管理器中,但内存使用量仅为80k
  • 很长一段时间没有发生任何事情,最后我得到一个带有以下错误消息的窗口:“调试正在停止但尚未完成。您可以强制调试立即停止,但任何正在分离的进程可能相反,当调试完全停止时,该窗口将自动关闭“。窗口不会消失,所以过了一会儿我按下“立即停止”按钮。
  • 暂时没有任何事情发生(调试器按钮仍然可见但是灰色)
  • 一段时间后会出现一个新窗口:“无法启动程序”(exe的路径)'。OLE har skickatenbeatäranochäntarpåsvar“。最后一句是瑞典语,因为“OLE已发送请求并正在等待回复”。我按OK,调试器按钮消失了。
  • 应用程序仍在运行,内存使用量仍然只有80k。
  • 我尝试使用任务管理器结束该过程,但它没有被杀死。
  • 我退出Visual Studio,最后这个过程就消失了。

该应用程序是一个非托管C ++项目,它使用大量DLL文件作为插件。我正在使用“多线程调试”运行时,并且我确保所有依赖项都是针对相同的运行时编译的。

在这样做时,这个问题突然出现了。我试图扭转我的变化,但它没有帮助。重新启动计算机也无济于事。

我已经随机运行了一两次应用程序。如果我然后结束应用程序并再次启动它它没有启动。所以我认为这不是因为我的配置。

有什么想法吗?

还有一点需要注意:如果我从Visual Studio外部启动它,应用程序将启动并运行。

2 个答案:

答案 0 :(得分:2)

在您的程序使用的隐式链接DLL之一中听起来像一个行为不端的DllMain()。您可能会从“输出”窗口中获得提示,它会在加载时列出DLL的名称。如果它是wininet.dll,那么你已经陷入了符号服务器的死锁陷阱。

答案 1 :(得分:1)

好的,我已经解决了我的问题,但我不知道怎么做。

我试过的一件事是删除所有构建文件和exe和dll文件,然后重新编译所有内容。但这没有帮助。

然后我随机尝试了一件事:插件在同一个解决方案中。所以我删除了它们并尝试再次运行。 这次它有用了!所以我添加了所有的插件项目,仍然有用!

所以,我想我永远不会知道发生了什么。但是删除并向解决方案添加项目也可以解决别人的问题......:)

相关问题