1、利用断点进行调试

添加断点的方式有以下几种

  • 1.键盘快捷键F9
  • 2.通过菜单【Debug(调试)】-》【Toggle BreakPoint(切换断点)】
  • 3.点击代码行左边的空白处(推荐)

设置断点后,按F5运行程序,当运行到断点处时就会暂停

此时可以 按F10逐过程或F11逐语句执行后面的程序语句

2、条件断点

条件断点会在条件触发时断点才生效。

假设有以下代码(C#):

循环输出 i,

1  static void Main(string[] args)
2         {
3            for(int i = 0;i<100;i++)
4             {
5                 Console.WriteLine(i);
6             }
7         }

如果我们想在i == 50的时候进入断点,可以这么操作

1.按【利用断点调试】中的方法建立断点

2.在断点上右键,选择,条件。输入 i == 50

3.按F5运行程序,当i = 50时,程序会暂停进入断点。

3.数据断点(限C++ Native)

数据断点可以对指定变量进行监控,程序运行到变量值发生变化 时进入调试状态。

注意:

1、数据断点在程序执行后,才可以添加。

2、数据断点只能对全局变量进行监控

创建C++控制台应用程序

1 #include <iostream>2 3 int b = 0;4 5 int main()6 {7     std::cout << "Hello World!\n";8 9     b = 100;
10 }

我们在第7行处添加一个普通断点,按F5执行程序。

当运行到第7行进行断点时,通过快速监视功能,获取变量b的地址。

然后通过菜单

Debug(调试)-》New Breakpoint(新建断点)-》Data Breakpoint(数据断点),打开数据断点窗口。输入变量b的地址,单击确定

也可以通过将变量b添加监视

然后在监视窗口中变量b的选项中选择值更改时中断

这样当变量b的值在更改时,就会触发断点

4.监视功能

将变量添加到监视后可以实时查看变量的变化。监视功能在调试全局变量时非常有用,可以实时查看变量的值。

通过调试-》窗口-》监视-》监视1,可以打开监视窗口。

将变量添加到监视后,可以实时查看变量值的变化

测试代码如下:

1 int main()
2 {
3     int num = 0;
4 
5     for (int i = 0; i < 100; i++)
6     {
7         num++;
8     }
9 }

在num = 0处和num++处添加断点,按F5执行程序,将num添加监视。

然后多次按下F5,可以看到num的值在变化。

5.快速监视

快速监视简单来说就是执行单次监视功能。可以查看代码执行到当前位置时,变量的值,还可以执行表达式。

快速监视可以方便我们在运行时,对变量执行相关操作,并且马上可以看到结果。如有一个DataTable dt,我们想查找第一行某一列的值,如果单独编写代码来完成,费时又费力,这时就可以借助快速监视功能,在表达式框中输入 dt.Rows[0]["xx],再按下回车就可以看到结果。

这里我们对num执行快速监视,可以看到当前的值是32

执行表达式,如 num + 100,按下回车,可以看到值是132

6.调用堆栈

使用调用堆栈功能可以查看函数调用的层次结构。

通过调试-》窗口-》调用堆栈可以打开调用堆栈窗口

测试代码如下:

1 #include <iostream>2 #include<Windows.h>3 4 void func2()5 {6     7 }8 9 void func1()
10 {
11     func2();
12 }
13 
14 
15 int main()
16 {
17     func1();
18 }

在func2函数中,添加一个断点,按F5执行程序。打开调用堆栈,可以看到函数的调用层次

此时双击调用堆栈中的调用层次,可以跳转到调用的地方 。

当程序抛出异常时,也可以打开调用堆栈,然后定位到引发异常的函数,并进行修改。

7.查看内存里的数据

在日常开发中,经常会需要进行数据的传递,一般会传递一个指针变量。而有时会因为某种原因而导致部分数据出错。在排查问题时,就 可以使用内存窗口

通过调试-》窗口-》内存-》内存1,可以打开内存窗口。

测试代码如下:

1 void PrintArray(int* ar,int size)2 {3     for (int i = 0; i < size; i++)4     {5         std::cout << *ar << std::endl;6         ar++;7     }8 }9 
10 int main()
11 {
12     int ar[]{ 1,2,3 };
13     PrintArray(ar, 3);
14 }

假设我们拿到了一直int指针,想查看指针指向的内存里的数据。如上面的ar,

在PrintArray函数中,添加断点,按F5执行程序,当程序执行中断点处时,打开内存窗口

首先复制指针所指向的内存地址

粘贴到内存窗口中,按下回车,可以看到内存里的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93921.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93921.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93921.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux -- 线程同步

1.1条件变量 (1)当⼀个线程互斥地访问某个变量时&#xff0c;它可能发现在其它线程改变状态之前&#xff0c;它什么也做不了。 (2)例如⼀个线程访问队列时&#xff0c;发现队列为空&#xff0c;它只能等待&#xff0c;只到其它线程将⼀个节点添加到队列 中。这种情况就需要⽤到…

前端进阶指南:JavaScript性能优化实战全解析

深入剖析 JavaScript 性能瓶颈&#xff0c;分享优化技巧与最佳实践&#xff0c;让你的前端应用更快、更稳、更流畅。 &#x1f4d1; 目录 一、前言 二、性能瓶颈的常见来源 三、JavaScript代码优化技巧 1. 避免重复计算 2. 合理使用防抖与节流 3. 使用事件委托 四、渲染…

RabbitMQ:SpringAMQP Direct Exchange(直连型交换机)

目录一、案例需求二、基础配置三、代码实现直连型交换机也叫做定向交换机&#xff0c;通过RoutingKey绑定交换机与队列直接的关系。 生产者源码 消费者源码 一、案例需求 在RabbitMQ控制台中&#xff0c;声明队列direct.queue1和direct.queue2。在RabbitMQ控制台中&#xff…

implement libtime on Windows

因为Windows的time命令和Linux的time命令不一样&#xff0c;尝试实现libtime libtime.h /** libtime.h - 跨平台时间测量库* 功能&#xff1a;执行外部命令并测量其运行时间和资源使用*/#ifndef LIBTIME_H #define LIBTIME_H#include <stdio.h> #include <stdlib.h>…

Unity进阶--C#补充知识点--【C#各版本的新功能新语法】C#1~4与C#5

来源于唐老狮的视频教学&#xff0c;仅作记录和感悟记录&#xff0c;方便日后复习或者查找 一.C#版本与Unity的关系 1.各Unity版本支持的C#版本 更多信息可以在Untiy官网说明查看 https://docs.unity3d.com/2020.3/Documentation/Manual/CSharpCompiler.html&#xff08;这个好…

水闸安全综合监测系统解决方案

一、方案概述 水闸作为重要的水利工程设施&#xff0c;承担着防洪、排涝、供水和灌溉等关键功能。其安全性直接关系到下游人民群众的生命财产安全以及区域经济的稳定发展。近年来&#xff0c;随着极端天气频发和工程老化问题日益突出&#xff0c;水闸安全监测工作显得尤为重要。…

基于单片机智能点滴输液系统

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 该系统基于单片机控制技术&#xff0c;结合传感器和无线通信模块&#xff0c;实现对输液过程的实…

AI数据仓库管理提升效率

内容概要在数字化转型浪潮中&#xff0c;AI数据仓库管理正重塑企业数据处理格局。本部分简要介绍其核心机制&#xff0c;即通过智能API接入外部数据源实现多平台数据无缝整合&#xff0c;随后应用数据清洗技术去除冗余信息&#xff0c;确保数据质量。同时&#xff0c;加密存储机…

使用 Docker 安装长安链管理平台 + 部署区块链与示例合约

文章目录简介登录官网GithubPodman 配置&#xff08;Docker 配置 registry 地址&#xff09;安装长安链管理平台下载源码docker-compose.yml登录管理平台部署区块链Dockerfile构建镜像部署长安链订阅区块链部署合约下载示例合约部署示例合约投票管理文件哈希存证查找存证信息区…

Python训练营打卡 DAY 41 简单CNN

知识回顾 数据增强卷积神经网络定义的写法batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据特征图&#xff1a;只有卷积操作输出的才叫特征图调度器&#xff1a;直接修改基础学习率 卷积操作常见流程如下&#xff1a; 1. 输入 → 卷积层 → Batch归一化层…

云端赋能,智慧运维:分布式光伏电站一体化监控平台研究

摘要 本文针对分布式光伏电站存在的监管困难、火灾隐患、系统繁杂及运维不规范等行业痛点&#xff0c;提出AcrelCloud-1200光伏运维云平台解决方案。平台通过ANet-1E2S-4G网关集成多品牌逆变器数据&#xff0c;结合视频监控与气象站&#xff0c;实现电站全域监测&#xff1b;开…

CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了

关注gongzhonghao【CVPR顶会精选】1.导读1.1 论文基本信息论文标题&#xff1a;《HOLODECK: Language Guided Generation of 3D Embodied AI Environments》作者&#xff1a;Yue Yang*1, Fan-Yun Sun*2, Luca Weihs*4, Eli Vanderbilt4, Alvaro Herrasti4,Winson Han4, Jiajun …

迅为RK3568开发板搭建Ubuntu环境

本小节介绍开发所需 Ubuntu 环境的搭建方法。系统要求:Ubuntu 系统要求&#xff1a;Ubuntu18.04~21.10 版本。推荐使用 20.04 版本&#xff0c;内存 16GB 及以上&#xff0c;硬盘 100GB 及以上。Ubuntu 系统的用户名不能包含中文字符。建议 Ubuntu 和 Windows 系统上安装的 Dev…

【数据结构】用堆解决TOPK问题

设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。示例&#xff1a;输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4]比较替换堆顶的数时&#xff0c;不需要让堆顶与数组的每一个数再进行比较&#xff0c;比较数组减去k个…

【深度长文】Anthropic发布Prompt Engineering全新指南

目录 1.什么时候适合用提示工程? 2.如何进行提示工程 2.1 使用提示模板 2.1.1 使用提示模板和变量 2.1.2 何时使用提示模板和变量 2.1.3 提示模板示例 2.2 保持清晰和直接 2.2.1 如何保持清晰、具有上下文和具体 2.2.2 示例 ​2.3 使用示例&#xff08;多示例提示…

【基础-判断】HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力

正确 解释如下: 应用加固: 这是指对应用程序进行保护,使其更难被逆向工程、篡改或盗版。HarmonyOS 作为现代操作系统,确实提供了这样的基础安全能力。 混淆: HarmonyOS 的 SDK 提供了代码混淆工具(通常基于 ProGuard 或类似技术)。开发者在构建应用时启用混淆,可以将类…

HTML 框架:构建网页布局的基石

HTML 框架&#xff1a;构建网页布局的基石 引言 HTML 框架是网页设计中不可或缺的一部分&#xff0c;它为网页内容的布局提供了强大的支持。本文将深入探讨 HTML 框架的概念、种类、应用以及如何有效地使用它们来构建网页布局。 什么是 HTML 框架&#xff1f; HTML 框架是一种网…

[Linux]学习笔记系列 -- [mm][memblock]

文章目录mm/memblock.c: Linux内核的“拓荒时代”内存管理器一、 核心问题&#xff1a;为什么需要 memblock&#xff1f;二、 核心原理与设计三、 在内核启动流程中的角色四、 关键 API五、 总结include/linux/memblock.hmm/memblock.cmemblock_reserve 预留内存块for_each_mem…

Java 面试八股文汇总(1000 道附答案解析)

在过 2 个月即将进入金九银十了&#xff0c;然而面对今年的大环境而言&#xff0c;跳槽成功的难度比往年高了很多&#xff0c;很明显的感受就是&#xff1a;对于今年的 java 开发朋友跳槽面试&#xff0c;无论一面还是二面&#xff0c;都开始考验一个 Java 程序员的技术功底和基…

给纯小白的Python操作 PDF 笔记

一、文件基础打开与关闭 推荐用 with open(path, mode, encodingutf-8) as f:&#xff0c;自动完成 close()&#xff0c;避免泄露文件句柄。常见模式&#xff1a;r 读&#xff0c;w 写覆盖&#xff0c;a 追加&#xff0c;rb/wb 二进制。Windows 默认编码为 GBK&#xff0c;Linu…