调试C++代码遇到的那些坑

最近翻看以前的学习笔记,重温了不少之前调试C++代码遇到的坑,顿时觉得,记笔记真是程序开发工作中必备可少的环节。现将部分内容分享一下:

VS调试程序时,提示缺少ucrtbased.dll

当在VS下调试程序时,如果缺少ucrtbased.dll,一般会出现如下几种错误提示:

1)程序无法启动,因为您的计算机缺少 ucrtbased.dll 。尝试重新安装程序来解决这个问题。

2)启动 ucrtbased.dll 发生错误。无法找到指定的模块

3)加载 ucrtbased.dll 发生错误。无法找到指定的模块

4)ucrtbased.dll 的设计可能不适合在 Windows 上运行,或可能包含错误。

究其错误原因,多半是ucrtbased.dll被删除或放错位置、被PC上存在的恶意软件破坏、Windows注册表被损坏等。

解决办法:

访问网址:https://cn.dll-files.com/ucrtbased.dll.html,下载ucrtbased.dll。

ucrtbased(64位).zipicon-default.png?t=M5H6https://mp.weixin.qq.com/s/J3m6fD89X8EpCfnm1LtbAg

ucrtbased(32位).zipicon-default.png?t=M5H6https://mp.weixin.qq.com/s/J3m6fD89X8EpCfnm1LtbAg

ucrtbased.dll文件分64位和32位两种,分别放在电脑的

C:\Windows\System32和C:\Windows\SysWOW64目录下。这里要特别注意的是,64位windows系统下,SysWOW64目录下存放的是32位的DLL,System32目录下存放的是64位的DLL。SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方,而System32文件夹,是用来存放64位程序文件的地方。当32位程序加载System32文件夹中的dll时,操作系统会自动映射到SysWow64文件夹中的对应的文件。如果放置DLL的位置弄错了,就会弹出0xc000007b的错误提示。

这里附带提下,当出现0xc000007b的错误提示时,多半可以从如下几个方向排查:

1)系统缺少DX9,需要下载相关的DX修复工具

2)缺少对应的VC运行时库

3)程序所需要的动态库版本不对

4)就是上面提到的程序是64位的,加载的却是32位的动态库,反之亦然

最后,再附上怎么使用VS自带的查看程序是64位还是32位的工具的方法,这里以VS2015为例,步骤如下:

开始->所有程序->Microsoft Visual Studio 2015->Visual Studio Tools ->“VS2015 开发人员命令提示”后,就像普通的cmd一样的命令行环境,就可以正常使用VS的一些工具,其中就包括dumpbin,如下图所示:

执行dumpbin /headers C:\Windows\SysWOW64\msvcp140d.dll命令,红色方框内显示该DLL是x86,32位的,反之显示的是64位。

vs调试程序时,提示已加载xxx.dlll,无法查找或打开PDB文件

平时我们用VS调试程序时,有可能出现下面这样的问题:

1.“Win32Project.exe”(Win32):已加载“D:\Win32Project\Debug\Win32Project.exe”。已加载符号。

2.“Win32Project.exe”(Win32):已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

3.“Win32Project.exe”(Win32):  已加载“C:\Windows\SysWOW64\kernel32.dll”。已加载符号。

4.“Win32Project.exe”(Win32):  已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。

5.“Win32Project.exe”(Win32):  已加载“C:\Windows\SysWOW64\msvcr120d.dll”。已加载符号。

6.程序“[4308] Win32Project.exe”已退出,返回值为 0 (0x0)。

解决办法:

1)点 调试

2)然后 选项和设置

3)右边勾上 启用源服务器支持

4)左边点 符号

5)把微软符号服务器勾上

6)运行的时候等一下

7)问题解决

今日分享到此,更多内容,请关注“程序员超仔”微信公众号,或访问个人博客地址:www.51yourong.cn

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值