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

这篇具有很好参考价值的文章主要介绍了调试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位).ziphttps://mp.weixin.qq.com/s/J3m6fD89X8EpCfnm1LtbAg

ucrtbased(32位).ziphttps://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的错误提示。

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

这里附带提下,当出现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,如下图所示:

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

执行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文章来源地址https://www.toymoban.com/news/detail-462635.html

到了这里,关于调试C++代码遇到的那些坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VSCode调试C++代码的多种方案

    以下内容均针对 Linux 操作系统(包括Windows的Linux子系统WSL2)。 本文是对Linux系统中使用VSCode编译调试C++代码的系列文章的总结,前面三篇文章如下: 详解C/C++代码的预处理、编译、汇编、链接全过程 Linux环境使用VSCode调试简单C++代码 Linux环境使用VSCode调试CMake工程 在VSCode中

    2024年02月14日
    浏览(50)
  • c++代码调试工具,监视/快速监视窗口:

    代码调试,监视/快速监视: 程序处于调试状态时,可以使用监视(watch)窗口和快速监视(quick watch)命令执行变量值得查看、改变等操作。 快速监视: 方法: 在调试的状态下,将鼠标放在变量上,右键弹出菜单,点击“快速监视”,可以打开一个快速监视窗口,该窗口会

    2023年04月08日
    浏览(41)
  • 【C++】Visual Studio调试C++代码的13个技巧

      目录 前言 正文 一、打断点 二、逐语句执行和跳出执行 三、逐过程执行 三、运行到光标处 四、多次执行代码 五、快速监视 六、监视窗口 八、内存查看 九、局部变量 十、调用堆栈 十一、assert的使用 十二、条件断点 十三、函数断点 本文使用的是Visual Studio 2022社区版,但

    2023年04月24日
    浏览(67)
  • Linux环境使用VSCode调试简单C++代码

    本文将通过演示一个简单C++代码的编译调试过程,介绍在VSCode中如何使用Linux环境下的GCC C++编译器(g++)和GDB 调试器(gdb)。 关于GCC、g++、gcc、gdb,这里不做详细介绍,如果感兴趣可以参考另一篇文章:详解C/C++代码的预处理、编译、汇编、链接全过程,里面有详细的解释。 看懂

    2024年02月04日
    浏览(52)
  • Visual Studio Code(VSCode) 编辑/编译/调试 C++ 代码

    最近想要切换编辑工具,之前工作中使用过 Source Insight,Eclipse,CLion 来写 C++ 代码。目前来说 Source Insight 已经非常古老,只有编写代码还说得过去,编译、调试方面都不行。Eclipse 使用的时间最长,相对来说也比较好用,但是对于 C++11 之后的 C++ 代码实际上支持的并不友好。

    2024年02月03日
    浏览(161)
  • JDK8升级JDK17过程中遇到的那些坑

    JDK8虽然非常好,但是JDK版本已经发布到JDK20了,且JDK8后的版本升级了很多新的特性,如模块化、ZGC以及虚拟线程、结构性并发等,也是非常有吸引力的,所以决定将基于JDK8的项目升级到最近的LTS版本JDK17。 下载JDK17的最新版本 jdk-17_linux-x64_bin.tar.gz ,解压缩后移动到 /usr/lib

    2024年02月11日
    浏览(41)
  • 解决MAC中vscode调试C++代码无法处理输入的问题

    写在前面的话:很久没有使用C/C++进行编程了,这次在MAC电脑的vscode中对C/C++代码进行调试时,发现运行到scanf、cin等输入语句时无法输入,参考了网上一些教程,发现有些繁琐或是难以解决我的问题。因此以本文记录最终的解决方案,一来为了记录以便下次遇到时进行解决,

    2024年02月05日
    浏览(39)
  • C++ 学习笔记、01 | 开发简单职工管理系统遇到的一些问题

    记录开发简单职工管理系统遇到的一些问题,黑马教程 https://www.bilibili.com/video/BV1et411b73Z P147 ~ P166 头文件只声明,源文件来实现(本质上是类内声明类外实现) 源文件需要引用特定的头文件 #ifndef 的方式依赖于宏名字不能冲突( 最好采用这种方式 ) 保证同一个文件只会被编

    2024年02月08日
    浏览(39)
  • 盘点国内外那些API调试工具

    Postman Apipost Apifox Insomnia Hoppscotch Postman 老牌api工具,最初发布日期: 2012,超过2000w开发者使用 Github : https://github.com/postmanlabs Website : https://www.postman.com Platform : Windows、macOS、Linux、Web Postman Flows 功能可以像工作流一样编辑接口请求 Apipost 2021年国产新秀; Apipost = Postman + Swagge

    2023年04月22日
    浏览(43)
  • 记录一下Java JDBC连接微软SQL Server遇到的那些坑

    最近忙实习,宅在国内远程办公,然后呢我的西班牙老板又要求我用Java做某个管理系统。由于我的电脑和公司的远程电脑上都装的是SQL Server 2019,为了图方便,我就没有换数据库系统软件,顺便随手建了个库建了个表来测试一下。 表大概长这么一个样子:  插入了一些数据

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包