vs单步调试及断点调试基本介绍(入门版详细图文介绍)

简述:本文面向小萌新介绍visual studio2022下的基本调试技巧(其他主流IDE均相似,仅具体快捷键键位不同

//本文无废话,建议小萌新仔细阅读
//
//本文无废话,建议小萌新仔细阅读
//
//本文无废话,建议小萌新仔细阅读
//

//注,用win10/win11系统初学c/c++的话建议直接安装vs,省心,初学没必要为难自己
vs2022安装教程https://blog.csdn.net/qq_43444947/article/details/104476963

//
//

1: 断点调试

//作用:可以用来快速定位问题在哪一块,如:正常运行到断点位置后停住,通过窗口输出情况可以判断运行到断点之前的部分是否符合预期
//
//
用法:打断点,在侧栏点击一下,即可生成断点就是那个红色的点
在这里插入图片描述

//
断点的作用: 在调试启动时可以运行到这一步之后停止,
//
使用方法:调试->开始调试
//
在这里插入图片描述

//
//
//
断点停住后
1:可配合单步调试一步步的运行(见后文介绍)
2:也可以恢复运行状态,继续运行程序直到等待输入,异常或者运行到下一个断点
//
//
//
在这里插入图片描述

//
如上图
停止在断点行
解释:此时有两个断点,停在第一个断点处,前面的运行完,输出hello
//
下方窗口显示局部变量i的值是468因为此时停在断点,还没有进入for语句的初始化i为0,所以此时i的值是内存中的值
//
//
而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常-----按预期输出了hello
//
//
而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常-----按预期输出了hello
//
//
而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常-----按预期输出了hello
//
//
(实际中你可以通过多个关键地方打印信息,结合断点来快速定位问题)
//
//
在断点停住的情况下,可以接单步调试(见后面介绍),也可以恢复运行状态(使用方法,vs中是快捷键按f5
//
//
//vs中的位置------调试->继续,别的IDE也是类似,可能在侧边栏
//此处选择继续运行

在这里插入图片描述

//
//
此时,按完f5(vs中是点击继续)(别的IDE找到类似的选项之类),继续执行(或者叫“恢复程序运行状态”)后如图
在这里插入图片描述

上图解释:
调试启动后停在第一个断点后,程序停止在那一步此处选择继续运行,恢复运行状态此时一切顺利(没有异常等情况,一切顺利运行),直接运行至下一个断点,查看窗口输出
//
//
此时,按照预期输出了hello和3 6 9,然后停在第二个断点
//
//
//意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9)
//
//意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9)
//
//意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9)
//
//
//在实际项目开发中,会调用大量其他模块/底层api。此时可以通过关键地方设置多个断点,然后逐步恢复运行状态来判断哪个模块出现问题。而单步调试可用来在对应范围内去找具体的bug
//
//
//

2:** 单步调试**:

//作用:可以深入某一个模块,某一个函数去一行行执行代码,可以具体的去定位bug在哪一行。

//使用方法:
快捷键f11,(别的IDE也类似),单步调试可以直接按f11,然后从第一行开始逐步运行
//
//
不过通常用法是在断点调试下接单步。即直接运行到断点那行,再停下来一步一步运行,进而可以仔细检查每一行是否符合预期,
//
//在这里插入图片描述

//如上图,此时是调试启动后,一切顺利的运行到第一个断点后,假设第一个断点到第二个断点中有bug,此时使用单步调试去具体定位bug在哪一行,此时仔细观察这部分代码每一行的运行过程
//
//
//上图按了一次f11(别的软件类似)(逐语句运行),此时,运行一行运行for(int i=0;i<3;i++)i初始化为0,值从之前的468变为0
//
//注,下面的窗口也能显示变量的内存地址相关信息,也可以用来定位内存相关的问题
//
在这里插入图片描述
//如上图,此时按下第二次f11(逐语句运行,别的IDE类似),此时观察监控窗口
//此时执行完num+=3;
//
//num的值变为3;(符合预期,借助这种方式来定位bug具体在哪行
//
//
//注:电脑快捷键分软件和系统层快捷键
//本人戴尔G3是通过Esc+fn键切换,不同电脑可能不一样,如果按对应快捷键无效,考虑是否需要切换为软件层面
//
//
//
另,f10是逐过程调试,不会进入函数块(本文就不测了,自己写个函数调用实践一下)f11逐语句,会进入函数块内部去调试
//
//
//再次强调,单步调试可以检查每一步是否符合预期比如for循环是否越界,赋值是否正确等,内存分配问题,底层调用是否正确赋值,中间结果是否符合预期,等等各种问题

//
//

补充:如果不小心关闭输出窗口,可以在此处点开即可
//
//注,需要在调试状态(即本身处于断点停住的调试,或者单步状态下)点开 调试->窗口->需要的窗口
在这里插入图片描述
//
//
//
总的来说,断点调试用来在整个程序中定位问题属于哪一个模块,而单步调试用来定位问题具体在哪一行
//
//

3:** 调试的意义**:

调试的意义在于检测每一行,每一个函数,每一个模块是否符合自己预期来执行。
//
// 其中断点调试通常通过恢复运行状态(继续执行)快速定位bug在哪一个大的模块
//
// 而单步调试一般是在断点调试的状态下,去具体的定位哪一行代码有bug
//
//更多的调试技巧,如调试条件设置,断点设置,堆栈分析,快照分析等,都需要自己去钻研,万事开头难,祝大家一切顺利

//
//
//
//
//有用的话可以点个赞表示对我的支持鼓励,谢谢大家
//
//有用的话可以点个赞表示对我的支持鼓励,谢谢大家
//
//有用的话可以点个赞表示对我的支持鼓励,谢谢大家
//
//注,后续有问题可以在评论区留言,看到后会更新文章。
//
在这里插入图片描述

  • 407
    点赞
  • 702
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
### 回答1: Android 项目的基本结构包括以下几个部分: 1. AndroidManifest.xml 文件:这个文件是整个 Android 项目的配置文件,它包含了应用程序的基本信息,如应用程序的名称、本号、图标等,还包含了应用程序的组件信息,如 Activity、Service、BroadcastReceiver、ContentProvider 等。 2. Java 源代码:Android 应用程序的核心代码是由 Java 语言编写的,它们通常存放在 src 目录下。 3. 资源文件:Android 应用程序的资源文件包括布局文件、图片、音频、视频等,它们通常存放在 res 目录下。 4. Assets 文件夹:这个文件夹存放的是应用程序需要使用的一些资源文件,如数据库文件、字体文件等。 5. libs 文件夹:这个文件夹存放的是应用程序需要使用的一些第三方库文件,如 jar 包、so 库等。 6. Gradle 脚本:Gradle 是 Android 应用程序的构建工具,它使用 Groovy 语言编写构建脚本,这些脚本通常存放在项目根目录下的 build.gradle 文件中。 以上就是 Android 项目的基本结构。 ### 回答2: Android项目的基本结构可以分为以下几个部分: 1. Manifest文件:Android项目的基本配置文件,其中包含应用程序的清单信息,如包名、主要活动、权限等。 2. Java源代码:在Android项目中,主要使用Java语言开发应用程序逻辑。Java源代码包含在src文件夹中,可以根据需求创建不同的包和类来组织代码。 3. 资源文件:在res文件夹中,包含应用程序所需的各种资源文件,如布局文件、字符串文件、颜色文件、图片文件等。这些资源文件通过资源ID在代码中被引用,用于构建用户界面、定义应用程序的外观和行为。 4. 源码依赖库:在libs文件夹中,可以添加第三方开源库或其他工具类,以便在项目中使用。 5. 构建脚本文件:在项目的根目录中,包含用于构建和打包应用程序的Gradle构建脚本文件(build.gradle)或者Ant构建脚本文件(build.xml)。 6. 系统资源:Android框架提供了一系列系统资源,如系统图标、标准布局文件、主题样式等,这些资源在Android SDK中可以找到并导入到项目中。 7. 其他文件:还可能包含其他一些配置文件、测试文件、文档等。 这些组成部分共同构成了Android项目的基本结构。通过合理的组织和管理这些文件,开发者可以更好地编写、构建和维护Android应用程序。 ### 回答3: Android项目的基本结构是由一系列文件和文件夹组成的。在创建一个Android项目时,系统会自动生成一些核心文件和文件夹,这些文件和文件夹的作用和结构如下: 1. app文件夹:该文件夹是Android项目的主要文件夹,它包含了项目的源代码、资源文件、配置文件等。其中,主要包括以下文件和文件夹: - src文件夹:该文件夹用于存放项目的源代码,包括Java代码和XML布局文件等。 - res文件夹:该文件夹用于存放项目的资源文件,如图像、字符串、颜色等。其中,drawable文件夹用于存放图片资源,layout文件夹用于存放XML布局文件。 - AndroidManifest.xml文件:该文件是Android项目的配置文件,它包含了应用程序的基本信息和组件声明,如应用程序的包名、权限、启动活动等。 2. Gradle文件:Android项目使用Gradle构建工具来管理和构建项目。在项目的根目录下,会有一个build.gradle文件和一个settings.gradle文件。build.gradle文件用于配置项目的构建信息,如依赖库、打包格式等;settings.gradle文件用于配置项目的设置信息,如模块和库的引入等。 3. .idea文件夹:该文件夹是Android Studio创建项目时自动生成的,用于存储项目的一些配置信息,如本控制、构建、运行等。 4. build文件夹:该文件夹用于存放项目打包的输出文件,如apk文件、临时文件等。在使用Gradle构建项目时,该文件夹会自动生成。 5. app.iml文件:该文件是项目的主要模块配置文件,它记录了项目的依赖库、资源路径等信息。在运行项目时,Android Studio会根据该文件的配置来编译和构建项目。 除了以上主要文件和文件夹外,Android项目还可能包括其他一些附属文件和文件夹,如测试代码文件夹(test文件夹)、应用图标文件夹(mipmap文件夹)等。总之,Android项目的基本结构是一个按照约定的文件和文件夹的组合,它们协同工作来构建、编译和运行Android应用程序。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

——深情——

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值