1、打开vs2015,在菜单栏上找到“工具”---》“选项”。
2、打开选项设置界面,如下图所示。
3、在左边的列表框里找到调试的功能选项。
4、在调试的选项里,展开后,可以看到调试符号的子选项。
5、在右边可以看到“符号文件(.pdb)的位置”的字样,给“MicroSoft符号服务器”打勾,如下图所示,点击确定保存退出。
6、在主界面可以看到正在从microsoft服务器下载.pdb符号文件,vs也正在加载这些符号文件。
程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。当用 /ZI 或 /Zi 编译 C/C++ 程序时或用 /debug 编译 Visual Basic/C#/JScript .NET 程序时将创建 PDB 文件。 \x0d\x0a\x0d\x0a 在 Visual C++ 中,/Fd 选项用于命名由编译器创建的 PDB 文件。当在 Visual Studio 中使用向导创建项目时,/Fd 选项被设置为创建名为 project.PDB 的 PDB 文件。 \x0d\x0a\x0d\x0a 如果使用生成文件创建 C/C++ 应用程序,并指定 /ZI 或 /Zi 而不指定 /Fd 时,则最终将生成两个 PDB 文件: \x0d\x0a\x0d\x0a VC70.PDB (更笼统地说就是 VCx0.PDB,其中 x 表示 Visual C++ 的版本。)该文件存储各个 OBJ 文件的所有调试信息并与项目生成文件驻留在同一个目录中。 \x0d\x0a project.PDB 该文件存储 .exe 文件的所有调试信息。对于本机代码,它驻留在 \debug 子目录中。对于托管代码,它驻留在 \WINDEBUG 子目录中。 \x0d\x0a 每当创建 OBJ 文件时,C/C++ 编译器都将调试信息合并到 VCx0.PBD 中。插入的信息包括类型信息,但不包括函数定义等符号信息。因此,即使每个源文件都包含公共头文件(如 ),这些头文件中的 typedef 也只存储一次,而不是在每个 OBJ 文件中都存在。 \x0d\x0a\x0d\x0a 链接器将创建 project.PDB,它包含项目的 EXE 文件的调试信息。project.PDB 包含完整的调试信息(包括函数原型),而不仅仅是 VCx0.PDB 中的类型信息。这两个 PDB 文件都允许增量更新。 \x0d\x0a\x0d\x0a Visual Studio 调试器使用由链接器直接创建的 project.PDB 文件并将此 PDB 的绝对路径嵌入到 EXE 或 DLL 文件中。如果调试器在该位置无法找到 PDB 文件或者如果路径无效(例如,如果项目被移动到了另一台计算机上),调试器将搜索包含 EXE 的路径,即在解决方案的“属性页”中指定的“符号路径”(“调试符号文件”页 ->“通用属性”文件夹)。调试器不会加载与所调试的二进制不匹配的 PDB。 \x0d\x0a\x0d\x0a 搂主看看帮助先,自己找答案也是很有乐趣的。百度知道vs2017,运行时出现"未找到image.cpp,已引发...展开
查看全部1个回答
匿名用户
有时候,我们使用 VS(Visual Studio)编译程序时会出现“无法查找或打开PDB文件”的提示,并且此时程序会生成失败,无法运行,如下图所示:
大家不要惊慌,出现这种提示并不是代码写错了,而是编译器设置的问题,改一下设置就 OK 了。
先说一下PDB文件是什么
当程序在 VS 上编译时,程序所依赖的所有动态链接库(dll 文件)也会被编译,编译过程中每个 dll 都会产生一个pdb文件,又称为“符号文件”,是一个存储数据的信息文件,其包含 dll 库在编译过程的某些调试信息,例如程序中所用到的全局变量、局部变量、函数名以及他们的入口地址等。
pdb 文件主要用于调试程序,多用于当VS中有多个项目,且项目之间互有依赖关系时,使用pdb文件调试程序,往往会事半功倍,初学者一般不会用到。
当使用VS 调试程序时,会默认加载你的程序以及程序依赖的dll库产生的所有pdb文件,但是结果往往是VS自己找不到依赖库的pdb文件,于是就提示给你“无法查找或打开pdb文件”。
如何修复这个错误
我们可以通过对 VS 做适当的设置,使之能够查找到相应的 PDB 文件,具体步骤如下(这里我们以 VS2017 为例进行说明,其它版本的 VS *** 作步骤也一样)。
1) 选择菜单栏中的“调试 -->选项”,如下图所示:
2) d出“选项”对话框后,选择“调试 -->常规”,在右侧选项栏中勾选“启用源服务器支持”(包含的 3 个子选项不用勾选),此时会d出一个安全警报框,选择“是”即可,如下图所示:
3) 还是在“选项”对话框中,选择“调试 -->符号”,在右侧选项栏中勾选“Microsoft符号服务器”,此时会d出一个提示对话框,点击“确定”即可。同时,对于缓存符号的目录,选择图示中的目录即可:
4) 确定之后,重新运行你的程序,首次运行时,由于编译器会加载所有动态链接库的pdb文件,可能会等到几秒钟。程序运行后,之前输出窗口中的“无法查找或打开pdb文件”的提示不见了,如下图所示:
如上图所示,由于pdb文件,又名“符号文件”,所以“已加载符号”,也就是成功加载了动态链接库对应的pdb
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)