VS“无法查找或打开PDB文件”问题

本文介绍了在Visual Studio中调试程序时遇到无法查找或打开PDB文件的问题,并详细解释了PDB文件的作用及其生成原理。针对该问题,文章提供了一套有效的解决方案,包括启用源服务器支持和设置符号缓存位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在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由来

1.PDB文件

PDB(Program Data Base),意即程序的基本数据,是VS编译链接时生成的文件PDB文件是在编译工程的时候产生的,它是和对应的模块(exe或dll)一起生成出来的DPB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。

2 .程序编译过程

当程序在 VS 上编译时,程序所依赖的所有动态链接库(dll 文件)也会被编译编译过程中每个 dll 都会产生一个pdb文件,又称为“符号文件”,是一个存储数据的信息文件,其包含 dll 库在编译过程的某些调试信息,例如程序中所用到的全局变量、局部变量、函数名以及他们的入口地址等。

pdb 文件主要用于调试程序,多用于当VS中有多个项目,且项目之间互有依赖关系时,使用pdb文件调试程序,往往会事半功倍,初学者一般不会用到。

3.Bug产生原因

当使用VS 调试程序时,会默认加载你的程序以及程序依赖的dll库产生的所有pdb文件,但是结果往往是VS自己找不到依赖库的pdb文件,于是就提示给你“无法查找或打开pdb文件”。

解决方案

1)调试 -》 选项

在这里插入图片描述
2)调试 -》 常规 -》启用源服务器支持
在这里插入图片描述
3)调试 -》 符号,Microsoft符号服务器
在这里插入图片描述

选择合适的位置存放缓存符号

在这里插入图片描述

再次运行调试

在这里插入图片描述

打开缓存目录简单查看文件夹。(发现文件夹中出现了dll对应的pdb)

在这里插入图片描述
运行结果
在这里插入图片描述

参考资料:
http://c.biancheng.net/view/474.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值