VisualStudio2019(课程:C/C++调试技巧大全)

2023-11-01 01:30

本文主要是介绍VisualStudio2019(课程:C/C++调试技巧大全),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

官网的文档:

https://docs.microsoft.com/en-us/visualstudio/ide/?view=vs-2017

目录

 2-VS2019下载安装

6-VS2017安装部署

7-解决VS2017缺少SDK8.1

8-项目类型建立错误处理

9-单点调试与但不跟踪

开始调试 F5

逐语句F11   跳出shift + F11

逐过程F10

10-断点管理与变量监控

监视窗口:Ct+Al+w + 1/2/3/4

断点查看:Ct+Al+B

11-内存监控

内存监控Ct+Al+M + 1/2/3/4

12-数组监控

13-结构体监控

14-多文件函数跳转

函数跳转:Ct+鼠标左键/ F12    Ct + -返回去

15-任意调整运行点

拖拽黄色的箭头,可以调整调试的过程

16-附加到进程调试

17-远程附加到进程调试【上】

18-远程附加到进程调试【下】

19-(番外篇)#pragma once与#ifndef

20-(番外篇)VisualStudio字符编码说明

21-(番外篇)VisualStudio内部SDL安全检查

22-(番外篇)内存泄露处理

23-(番外篇)处理键盘缓冲区导致的错误

24-(番外篇)让自己的程序运行在别人的电脑上

25-(番外篇)让程序运行在Windows XP上

26-(番外篇)DebugView远程调试【上】

27-(番外篇)DebugView远程调试【下】

C/C++调试技巧大全-CLion(七日成蝶)

1-CLion下载及部署

3-CLion常用配置

4-CLion断点调试初探

7-GDB调试与断点视图

8-Attach to Process方法调试

10-NginX载入CLion

11-CLion载入项目的注意事项

12-Makefile转CMakeLists

13-在CLion中编译并运行NginX

14-CLion调试NginX


C/C++调试技巧大全-VisualStudio(七日成蝶)

 2-VS2019下载安装

https://visualstudio.microsoft.com/zh-hans/

只选择了这个

 

6-VS2017安装部署

7-解决VS2017缺少SDK8.1

 Windows SDK version 8.1 

或者  

或者  

        可以首先安装SDK8.1,再装vs2017

8-项目类型建立错误处理

工程的类型:

1.控制台

main函数:

要使用:

2.窗口

要匹配否则就会出现以下的错误:

 

9-单点调试与但不跟踪

开始调试 F5

逐语句F11   跳出shift + F11

逐过程F10

显示值:

崩溃了可以查看这里:

10-断点管理与变量监控

监视窗口:Ct+Al+w + 1/2/3/4

打开这个监视的窗口,可以监控变量,注意要在这个作用域之间,才会查看变量。

离开作用域之后,就会变成灰色

断点查看:Ct+Al+B

可以选择,可以取消,灵活管理。

11-内存监控

内存监控Ct+Al+M + 1/2/3/4

12-数组监控

数组查看:

13-结构体监控

14-多文件函数跳转

函数跳转:Ct+鼠标左键/ F12    Ct + -返回去

15-任意调整运行点

拖拽黄色的箭头,可以调整调试的过程

16-附加到进程调试

源代码生成的进程可以调试,不是源代码生成的不行。还要是VS生成的exe,还要不能是一瞬即逝。

这里打开是父子关系:

独立打开:一个exe文件,可以加一个getchar();

 

17-远程附加到进程调试【上】

当前pc编译,运行到另外一台pc。

注意:

1.要匹配。

2.远程调试器的版本要匹配

这个路径:

为了使程序.exe文件直接在其它的机器运行,将其改为MTD。将用到的库用静态方式编进去。

找到:

放到要运行的pc:

 

18-远程附加到进程调试【下】

管理员运行:

 

 

打开代码:

完毕,就可以调试代码了。

19-(番外篇)#pragma once与#ifndef

效果一样的:第一种是Visual Studio自带的,不适合移植

20-(番外篇)VisualStudio字符编码说明

win32控制台:

win32windows程序:

在windows编程中:使用的是多字符集:这样写就可以了

如果改成了unicode就要加一个L。

21-(番外篇)VisualStudio内部SDL安全检查

还可以:

22-(番外篇)内存泄露处理

23-(番外篇)处理键盘缓冲区导致的错误

问题:

a回车之后,b没机会输入

 

清空缓冲区

多这样写:

24-(番外篇)让自己的程序运行在别人的电脑上

一个程序

直接拷贝exe文件给别人,别人的电脑上没有vs,会有如下的错误

或者

静态链接库:

 

一些运行库:

25-(番外篇)让程序运行在Windows XP上

静态库:

可以从win10 到win7,但是xp不行

编译一下会有这个错误:

现在更改一下:

ok  或者用V100就不会出现这个错误。

26-(番外篇)DebugView远程调试【上】

1.打开工具

2.打开状态的

3.打开,过滤器

4.清空

5.打开exe文件

27-(番外篇)DebugView远程调试【下】

 

打开另一台电脑:

打开exe

另一台设备打开:采集日志

C/C++调试技巧大全-CLion(七日成蝶)

1-CLion下载及部署

3-CLion常用配置

4-CLion断点调试初探

7-GDB调试与断点视图

断点视图

8-Attach to Process方法调试

1.先build

2.找出可执行文件

3.最后

10-NginX载入CLion

ok

 

ok

出现cmakefile 不能直接使用:  因为这是全部的。但有些没有使用

所以要对应起来:

 

可以用脚本

 

11-CLion载入项目的注意事项

根据提示:

用clion导入之后 就会有

所以要用脚本 处理一下

 

12-Makefile转CMakeLists

改:

  再build

13-在CLion中编译并运行NginX

运行,关闭旧的启动

 

14-CLion调试NginX

将worker 和 master 合并,关闭守护进程的模式

再调试

现在请求:

卡在断点上:

 

这篇关于VisualStudio2019(课程:C/C++调试技巧大全)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319530

相关文章

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程