文章目录
前言
在VS上编写完程序,想让程序简单调试一下,如下图所示
但是,有时候在VS上运行程序时候会出现无法查找或打开 PDB 文件
错误
“test.exe”(Win32): 已加载“G:\vsTest\test\Release\test.exe”。已加载符号。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\apphelp.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\ucrtbase.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\msvcp140.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\vcruntime140.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\vcruntime140.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已卸载“C:\Windows\SysWOW64\vcruntime140.dll”“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel.appcore.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\msvcrt.dll”。无法查找或打开 PDB 文件。“test.exe”(Win32): 已加载“C:\Windows\SysWOW64\rpcrt4.dll”。无法查找或打开 PDB 文件。
PDB文件介绍及Bug由来
PDB文件
PDB(Program Data Base),意即程序的基本数据,是VS编译链接时生成的文件。PDB文件是在编译工程的时候产生的,它是和对应的模块(exe或dll)一起生成出来的。DPB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。
2 .程序编译过程
当程序在 VS 上编译时,程序所依赖的所有动态链接库(dll 文件)也会被编译,编译过程中每个 dll 都会产生一个pdb文件,又称为“符号文件”,是一个存储数据的信息文件,其包含 dll 库在编译过程的某些调试信息,例如程序中所用到的全局变量、局部变量、函数名以及他们的入口地址等。
pdb 文件主要用于调试程序,多用于当VS中有多个项目,且项目之间互有依赖关系时,使用pdb文件调试程序,往往会事半功倍,初学者一般不会用到。
Bug产生原因
当使用VS 调试程序时,会默认加载你的程序以及程序依赖的dll库产生的所有pdb文件,但是结果往往是VS自己找不到依赖库的pdb文件,于是就提示给你“无法查找或打开pdb文件”。
解决方案
1)调试 -》 选项
2)调试 -》 常规 -》启用源服务器支持
3)调试 -》 符号,Microsoft符号服务器
选择合适的位置存放缓存符号
再次运行调试
打开缓存目录简单查看文件夹。(发现文件夹中出现了dll对应的pdb)
运行结果
参考资料:
http://c.biancheng.net/view/474.html
来源地址:https://blog.csdn.net/weixin_42888638/article/details/126912268