c++ - 应用程序未在调试器中启动

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

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

这是我的做法:

  • 我重建应用程序并按 F5 启动它
  • VS2005 窗口的标题为“projectname (Running) ...”
  • 调试器按钮出现但变灰
  • 应用程序出现在 Windows 任务管理器中,但它的内存使用量只有 80k
  • 很长一段时间没有任何反应,最后我得到一个带有以下错误消息的窗口:“调试正在停止但尚未完成。您可以强制立即停止调试,但任何正在分离的进程都可能而是终止。当调试完全停止时,此窗口将自动关闭"。窗口并没有消失,所以过了一会儿,我按下了“立即停止”按钮。
  • 有一段时间什么都没有发生(调试器按钮仍然可见,但变灰了)
  • 一段时间后出现一个新窗口:“无法启动程序‘(exe 路径)’。OLE har skickat en begäran och väntar på svar”。最后一句是瑞典语,意思是“OLE 已发送请求并正在等待响应”。我按下 OK,调试器按钮消失了。
  • 应用程序仍在运行,并且仍然只有 80k 的内存使用量。
  • 我尝试用任务管理器结束进程,但它没有被杀死。
  • 我退出 Visual Studio,最后进程消失了。

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

就在做的时候突然出现了这个问题。我试图撤销我的更改,但没有帮助。重新启动计算机也无济于事。

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

有什么想法吗?

请注意:如果我从 Visual Studio 外部启动应用程序,它会正常启动和运行。

最佳答案

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

关于c++ - 应用程序未在调试器中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123146/

相关文章:

c++ - 无法使用与时间和时钟相关的函数 C++ 进行编译

c++ - 如何使用 Visual Studio 2008 构建 libevent 版本 2.0.10

c++ - 指定bazel的MSVC版本

c# - 我们可以在 'app.config' 文件中声明变量吗?

.NET 应用程序到 Mac OS X 应用程序?

php - PHP解析/语法错误;以及如何解决它们

linux - 跨gdb : fix a mismatch between libthread_db and libpthread

c++ - 将类成员函数作为参数传递给全局函数

node.js - Visual Studio 中的 Node js 项目错误。 "The specified path, file name, or both are too long"

c++ - 无法访问存储在多维 vector 中的对象 (C++)