当前位置: 首页 > news >正文

VS如何调试C运行时库

    C运行时库(简称crt)是C标准库等组件的基础, 其会在进入main函数之前运行一些代码, 包括但不限于初始化堆栈, 内存分配等操作
    这些代码是可以随着VC工具集一起安装到我们本地的。看一下这个情况, 就是VS调试器没找到对应的crt源码的情况, 调用堆栈是空的。为了解决这个问题, 我们需要确认以下几点:

  • crt确实装到本地了
  • pdb符号已经下载到本地或者可以从微软符号服务器在线下载
  • 关闭只调试我自己的代码选项, 并且启动没源码时使用反汇编入下图所示
    在这里插入图片描述
    下面来确认一下crt是否安装, 找到vs的安装目录, 然后进入平台工具集目录下, 由于每个VS版本默认使用的工具集版本可能不一样, 就比如说我这里使用的是vs2017, 安装的就是v141的工具集, 反映到这里就是14.1xxxxx目录。
    在这里插入图片描述
    下图是我的工具集
    在这里插入图片描述
    接着确认pdb符号是否存在, 注意这里需要科学上网操作否则会卡死。同样, 选择工具->选项->调试->符号。如果你本地没有下载对应的符号, 你可以直接按照如下配置进行配置。首先勾选Microsoft符号服务器这代表你愿意从微软服务器下载符号文件, 然后选择一个目录, 这里就会存储你下载下来的符号文件。
    在这里插入图片描述
    这里我还使用了另一种方法就是设置一个环境变量==_NT_SYMBOL_PATH==, 我将其配置成了如下图所示, 这个url: http://msdl.microsoft.com/download/symbols是微软的符号服务器。D:\MicrosoftSymbols是我要把符号文件缓存下来的目录。设置了这个环境变量VS或者微软的windbg调试器就会自动从符号服务器上下载对应符号文件
    在这里插入图片描述
    完成后重启一下VS, 你就能开开心心的边调试, 边阅读crt的源码啦~
    在这里插入图片描述
    (完)
http://www.lryc.cn/news/301175.html

相关文章:

  • 软件工程师,超过35岁怎么办
  • 通过 Prometheus 编写 TiDB 巡检脚本(脚本已开源,内附链接)
  • sql语句学习(一)--查询
  • 【HTML】交友软件上照片的遮罩是如何做的
  • 【Java EE初阶十二】网络编程TCP/IP协议(一)
  • element-ui解决上传文件时需要携带请求数据的问题
  • 【AI视野·今日NLP 自然语言处理论文速览 第七十九期】Thu, 18 Jan 2024
  • Docker容器运行
  • 【计算机网络】网络层之IP协议
  • 2024/2/17 图论 最短路入门 dijkstra 1
  • 交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)
  • 最适合初学者的Python入门详细攻略,一文讲清,赶紧收藏!
  • 幻兽帕鲁新手游戏攻略分享
  • 代码随想录算法训练营DAY19 | 二叉树 (6)
  • 【C++】实现Date类的各种运算符重载
  • 【Linux】程序地址空间 -- 详解 Linux 2.6 内核进程调度队列 -- 了解
  • 10-通用类型、特质和生命周期
  • STM32CubeMX,定时器之定时功能,入门学习,如何设置prescaler,以及timer计算PWM输入捕获方法(重要)
  • 蓝桥杯:C++队列、优先队列、链表
  • 【C语言】长篇详解,字符系列篇1-----“混杂”的各种字符类型字符转换和strlen的模拟实现【图文详解】
  • 2024年【高处安装、维护、拆除】考试总结及高处安装、维护、拆除考试技巧
  • 开源无处不在,发展创新下又有何弊端
  • LeetCode 0429.N 叉树的层序遍历:广度优先搜索(BFS)
  • Practical User Research for Enterprise UX
  • 文生视频:Sora模型报告总结
  • GA 374-2019 电子防盗锁检测
  • 代码随想录day26 Java版
  • 英文论文(sci)解读复现【NO.21】一种基于空间坐标的轻量级目标检测器无人机航空图像的自注意
  • 数据集合
  • php基础学习之作用域和静态变量