【问题标题】:Cannot run VC++ program without debugging不调试就无法运行VC++程序
【发布时间】:2010-12-22 04:13:30
【问题描述】:

我可以在调试的情况下运行,我可以在发布模式下运行,但我不能在没有调试的情况下运行。我很确定我在某个地方弄乱了 Visual Studio 中的配置,但我不确定。计算机被冻结 我可能无意中点击了某些东西。它通常可以工作。有人有什么想法吗?谢谢!

编辑: 该程序适用于 F5。当我将配置放入 Release 并运行可执行文件时,它也可以工作。但是 Ctrl + F5 不起作用,它创建的可执行文件也不起作用。

我只是收到一条错误消息,说 windows 正在寻找解决方案,然后:

我什至尝试从源代码安全的地方获取整个解决方案,结果相同...

编辑 2: 按照下面给我的windbg建议后,我遇到了这个错误:

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for mfc71d.dll -

【问题讨论】:

  • 你能不能说的更清楚一点。您是否想说您的程序在给出 Ctrl+F5 时有效,而在 F5 中无效。
  • 当弹出错误查看详情,最常见的原因是FileNotFoundException,你的应用需要一个找不到的dll
  • @Jani,看来你是对的.. 为什么它会在“调试”中找到 dll 而不是在“不调试就开始”

标签: c++ visual-c++ visual-studio-2003


【解决方案1】:

我的猜测是您的程序中有一些未定义的行为,例如未初始化的变量。在调试模式下,这不会导致崩溃,因为调试版本会为您执行初始化内存等操作,并且不会进行任何优化。

检查野指针错误,并检查未初始化的内存问题。并将 C++ 编译器的警告级别提高到 4 级(最高实用级别)。这应该可以帮助您发现这类错误。

【讨论】:

  • 感谢您的回复。鉴于上面的编辑......你认为我可以排除未初始化的变量是问题吗?谢谢!!
【解决方案2】:

看起来程序崩溃了。看起来 GUI 也将您指向崩溃转储。以下是检查转储的方法。

从 Microsoft 下载“Debugging tools for Windows”。安装它。

然后从命令提示符运行:

> cd \Program Files\Debugging Tools for Windows (x64) [or possibly without (x64)]
> windbg -z C:\users\ntsoiasue\appdata\local\temp\wer3f91.tmp.mdmp

windbg 启动时,它会给你一个命令提示符...

在该命令提示符中键入以下内容:

> .sympath+ [path to your VS output folder (eg. "Release").
             That is, somewhere with a .pdb file for your binary]
> .reload -f [name of your binary]
> k

这将为您提供崩溃的堆栈跟踪。

顺便说一句。 Windbg 是一个不错的工具,值得了解。

【讨论】:

  • 非常感谢您的回复。我按照您指定的说明进行操作,在跟踪中出现此错误:*** 错误:找不到符号文件。默认为 mfc71d.dll 导出符号 - 我正在谷歌上搜索它,但如果您有任何见解,我想让你们保持更新。谢谢!!
  • @ntsue mfc71d 是 C 库。特别是调试版本。它说它找不到它的PDB。 “k”的完整输出说明了什么?
【解决方案3】:

您是否尝试过完全重建?也许手动删除所有中间和输出文件?

【讨论】:

  • 感谢您的回复。是的,我进行了重建......甚至重新启动了机器......没有运气
【解决方案4】:

这也发生在我身上。我必须完全卸载 vc++。重新启动您的机器并再次安装。它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多