【问题标题】:(C++/Visual Studio) cannot find or open pdb file & no printing to console(C++/Visual Studio) 无法找到或打开 pdb 文件并且无法打印到控制台
【发布时间】:2016-04-03 21:53:21
【问题描述】:

这是我第一次使用 C++ 和 Visual Studio 社区(我只学过 Java 课程并使用过 Eclipse),只是想尝试使用 Visual Studio 社区打印到控制台,但遇到了麻烦。

这是我的调试输出:

'HelloWorld.exe' (Win32): Loaded 'E:\Programming\C++Projects\HelloWorld\Debug\HelloWorld.exe'. Symbols loaded.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\apphelp.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140d.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbased.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp140d.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel.appcore.dll'. Cannot find or open the PDB file.
The thread 0x10c8 has exited with code 0 (0x0).
The thread 0x1a98 has exited with code 0 (0x0).
The thread 0x1380 has exited with code 0 (0x0).
The program '[1592] HelloWorld.exe' has exited with code 0 (0x0).

这是我的实际代码:

// HelloWorld.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "sstream"
using namespace std;

int main()
{
    cout << "Hello world.";
    return 0;
}

我查了其他人的问题也有相同的PDB文件问题,共识似乎只是“不用担心,这是为了调试”。这很好,但我仍然不知道为什么我没有看到“Hello world”。打印在任何地方。我也尝试过以管理员身份运行 Visual Studio,如果这意味着什么的话。

我使用 Avast 并尝试关闭屏蔽,就像这篇文章所说:My programs are blocked by avast anti-virus 我还将整个文件夹 'E:\Programming\*' 添加到排除项中。

但命令提示符仍然只弹出一秒钟,然后在我看到任何内容之前关闭。据我所知,Avast 并没有通知它也阻止了任何东西。

【问题讨论】:

  • 您是否正在运行 Avast Antivirus?
  • 是的,我正在使用 Avast!
  • 那么副本就是合适的。
  • 我不这么认为。我再次编辑了我的帖子。我禁用了avast,它仍然给我同样的结果。
  • 哦,现在您已经添加了重要的细节!它是其他东西的副本。我不能再次关闭它:(stackoverflow.com/q/1775865/560648

标签: c++ visual-studio


【解决方案1】:

控制台打开然后关闭,因为程序结束了!它并非旨在无限期开放。

有些人在main 的末尾写了system("cls") 之类的技巧来产生“请按任意键继续”提示,但这实际上是不合适的,因为阻止输入不是程序语义的一部分.

您最好配置您的 IDE 以在程序完成后保持控制台窗口打开,如 this previous Q&A 中所述。

【讨论】:

    【解决方案2】:

    在 main 返回 0 之前,您必须向程序发出指令以等待用户,因为现在,您的程序正在按照您的要求执行:显示 hello world 并返回 0 并结束程序。对于 Windows,您可以简单地使用 system("pause");或者在这种情况下,您也可以使用 getchar();。

    另外,看起来您已经创建了一个 win32 windows 应用程序。您可能最好选择一个空的控制台应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 2015-08-20
      • 2012-12-30
      • 2015-04-07
      • 2015-01-23
      • 1970-01-01
      • 2015-01-27
      相关资源
      最近更新 更多