VS调试技巧

掌握VS2010调试 -- 入门指南 1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间。通常,debug是指发现缺陷并改正的过程。修正缺陷紧随debug之后,或者说二者是相关的。如果代码中存在缺陷,我们首先要识别造成缺陷的根本原因(root cause),这个过程就称作调试(debugging)。找到根本原因后... 阅读详情

跳到当前光标处(Ctrl+F10)

  我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按F10/F11,一步步走到目标代码处。当程序员的确需要仔细观察每一步的状态变化时, F10/F11是合理的选择。然而多数情况下,人们只想快速到达他们真正关心的代码处,这时候F10/F11就不是最佳选择了。

  这时,你应该利用“跳到当前光标处”这个功能。先把光标定位在要测的目标代码行上,再同时按Ctrl和F10,被测程序将直接跳到该行停下。你再也不用按许多次F10/F11了。即使目标代码位于独立的类或方法中,你仍然可以从当前正在检查的地方跳过去。

  条件中断

  另一种常见的情况是:开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。

  针对上述情况,Visual Studio提供了一个方便得多的功能——“条件中断”。只有当程序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。

  如何设置条件断点

  设置条件断点非常容易。在特定的行上,按F9设置断点。

  然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择“Condition…”。

  这时弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当局部变量paginatedDinners的尺寸小于10时,调试才中断。我们可以写出如下的表达式:

  现在我再运行这个程序,实现搜索,只有返回值小于10时,程序运行才会被中断。对于大于10的值,该断点将被跳过。

  记录到达断点次数

  有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第五次返回少于10份晚餐的查询结果时,中断程序运行。
  可以通过右击断点,然后在弹出菜单上选择“Hit count…”菜单命令实现。

  这时系统弹出一个对话框,它允许你指定:(1)当满足条件,而且进入断点的累计次数等于N时,断点命中一次。(2)当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。(3)当满足条件,而且进入断点的累计次数大于N时,每次命中断点。

  机器/线程/进程过滤

  设置如下:右击断点;在弹出菜单上选择“Filter…”菜单命令;然后指定命中断点的特定条件:在指定的机器上、或指定的进程中、或指定的线程中。

  跟踪点—进入断点时的自定义操作

  许多人不知道“跟踪点(TrackPoints)”这个调试功能。“跟踪点“是种特殊的断点,当它被命中时,它会触发一系列自定义操作。如果你想观察程序的行为,而又不想中断调试的时候,这个功能尤其有用。

  我将用一个简单的控制台程序来演示如何使用“跟踪点”。如下是斐波那契数列的一个递归实现:

  以上程序中,我们使用Console.WriteLine() 输出针对特定输入值生成的最终斐波那契数列。如果希望在调试器里观察操作中每一次递归运算后的数列而又不实际中断程序运行,该怎么办呢?“跟踪点”可以轻松实现。

  设置跟踪点

  你可以在特定的行上,按F9加跟踪点。然后
  右击断点,在上下文菜单中选择“When Hit…”:

  在弹出对话框上,你可以设置命中该断点时,所触发的事件。

  在上面例子中,我们设定一旦命中断点时就打印追踪信息。注意,我们已经把局部变量“x”的值,作为追踪信息的一部分输出。局部变量可以通过{变量名}语法输出。你还可以利用系统内置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追踪信息中输出常用的调试值。

  在上例中,我们同时选中了底端的“continue execution“选项,这说明我们不希望程序中断调试状态,而是继续运行。唯一的不同是:每次断点条件满足时,我们的自定义追踪信息都将被输出。

  现在当我们运行程序时,会发现自定义追踪信息自动显示在Visual Studio的“输出“窗口里。这让我们很容易看到程序的递归调用过程:

  你也可以选择往应用程序中添加一个自定义追踪信息的监听器。这时追踪点的输出信息将通过它输出,而不是Visual Studio的“输出“窗口。

  跟踪点—运行自定义的宏

  上周,我在伦敦演讲时,有听众问道:当命中跟踪点时,能否自动输出所有的局部变量?

  Visual Studio中并没有这样的内置功能,但我们可以写一个自定义宏来实现,然后在命中跟踪点时调用该宏。这个的实现需要先打开Visual Studio的宏编辑器(工具->宏->宏IDE菜单命令),然后在项目资源管理器的MyMacros节点下选择一个模块或创建新模块(如:加个名为“UsefulThings”的模块),再把下面的VB宏代码贴到模块中并保存。

Sub DumpLocals()
Dim outputWindow As EnvDTE.OutputWindow
outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object

Dim currentStackFrame As EnvDTE.StackFrame
currentStackFrame = DTE.Debugger.CurrentStackFrame

outputWindow.ActivePane.OutputString(“*Dumping Local Variables*” + vbCrLf)
For Each exp As EnvDTE.Expression In currentStackFrame.Locals
outputWindow.ActivePane.OutputString(exp.Name + ” = ” + exp.Value.ToString() + vbCrLf)
Next
End Sub

  上述宏代码将循环当前的堆栈,把所有的局部变量输出到“输出”窗口。

  使用自定义的“DumpLocals”宏

  然后,我们可以在如下的一个简单程序中使用刚定制的“DumpLocals”宏了:

  上述代码中,我们用F9在“Add”方法的返回值处加了个断点,然后右击断点,在弹出菜单上选择“When hit”。

  将显示如下对话框。和之前不一样, 我们不选“Print a message”选项,也不手工设定需要输出的变量;而是选择“Run a marco”复选框,并指定到我们上面创建的UsefulThings.DumpLocals宏上:

  为了使程序能在命中跟踪点后仍继续运行,我们将继续选中“continue execution”复选框。

  运行程序

  现在按F5运行程序,当“Add”方法被调用时,我们会在Visual Studio的“输出”窗口中看到如下结果。注意命中跟踪点时,宏会自动列出每个局部变量的名称和值:

或者在代码中写有Debug.Print() 语句来输出想查看的数据,在vs调试状态下我们可以再vs的OutPut窗口看见,同上图。

  利用数据提示功能(DataTips)

当程序执行到某一个位置,把鼠标放到变量上,会自动显示值。

  利用可视化调试窗体(DebuggerVisualizers)

举一个DataTable的DebuggerVisualizers的例子:

直接点击放大镜的图标,或者下拉列表中选择DataTable Visualizer,即可打开可视化的界面:如下图

当然如果是DateSet,可视化工具窗口的表可以选择DataSet所包含的所有表的信息。

 

原文地址:http://blog.youkuaiyun.com/xiaoxian8023/article/details/7217549

VS实用调试技巧 vs2019实用小技巧 阅读详情

相关推荐

一名合格程序猿的自我修养—VS实用调试技巧(详解+图例)

F5和F9是帮助我们快速到达我们想要到的地方,F10和F11是帮助我们到达地方后观察程序内部的运行情况的。CTRL + F5:开始执⾏不调试,如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。(为什么点击F5也可以直接完成运行呢?因为F5是用来运行到下一个断点处的,但是整个程序都运行结束了都没有发现断点)上面是我们很常用的快捷键,下面还有很多快捷键,我们平时应该多用才能提升我们写代码的速度,多用才能记住!

稻草人 1万+

VS2010中的调试技巧

今天的博文将介绍Visual Studio中的一些实用调试技巧。这是受我朋友Scott Cate (他发表过几十篇很棒的VS技术文章) 启发。他最近告诉我,许多Visual Studio下的程序员,甚至一些很有经验的开发人员,都不知道这些技巧。希望这篇文章能帮你掌握这些技巧。它们都很简单,却能帮你节约大量的时间。   跳到当前光标处(Ctrl+F10)   我经常看到人...

weixin_34062469的博客 685

VS2022调试讲解,实用调试技巧(快捷键,监视和内存的观察)

讲解VS2022如何调试和调试技巧

foodsx的博客 7188

vs2010下调试程序时,把信息打印到输出窗口

问题描述:我们平时在使用vs2010调试程序时,有时候想把一些变量或者信息打印到输出窗口,以便观察程序的运行结果,可以方便知道程序运行的参数对不对,当然也可以写文件的方式,但是写文件太麻烦了,以下介绍把调试信息打印到输出窗口的两种方法。 方法一:写一个变参函数,把想要打印到输出窗口的信息传给函数,函数内部调用系统函数OutputDebugString(),就可以把调试信息打印到输出窗口。 vo...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 1万+

ROS2实战:打造智能巡检机器人的关键技术与实现

本文详细介绍了基于ROS2和Navigation2构建智能巡检机器人的完整实战流程。通过设计主从协作的事件驱动架构,实现了机器人在已知地图中的自动导航、定点语音播报和环境图像采集功能。文章涵盖了从环境搭建、仿真配置到核心控制节点、语音服务与图像记录模块的代码实现,为开发者打造实用的自动巡检机器人提供了清晰的技术指南。

weixin_29031057的博客 222

【计算机视觉学习03】全景图像拼接

文章目录一、基本原理1.1 图像拼接的几何原理1.2 直线,圆,复杂曲线方程拟合1.3 RANSAC算法1.4 APAP算法1.5 寻找最佳拼接缝(Seam Finding)1.5.1 最大流问题1.5.2 最大流问题的增广链算法1.5.3 最大流最小割定理二、 图像拼接具体实现2.1 代码2.2 运行结果 一、基本原理 将两幅或多幅具有重叠区域的图像,通过特征匹配将具有相同的特征点(SIFT特征点)的图像拼接在一起,将来自多个不同视角拍摄的图像变换到同一视角下,拼接成一张宽视野图像。 图像拼接基础流程

一个正在努力学习的iter 7787

在Visual Studio里配置及查看IL

原文地址:http://www.myext.cn/other/a_25162.html 在之前的版本VS2010中,在Tools下有IL Disassembler(IL中间语言查看器),但是我想直接集成在VS2012里使用,方法如下: 1、选择 工具/外部工具,打开外部工具 2、点击右侧的 “添加”按钮,填写相关的参数 标题:ILDASM 命令:就是ildasm.exe的安...

weixin_30871905的博客 618

Security Onion的部署(超详细)

本文介绍了开源入侵检测系统securityonion的部署

qq_72583325的博客 6067

VS常用调试技巧

Debug和Release,VS调试快捷键,监视和内存观察,特殊案例

2502_91499791的博客 1369

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 304

【STM32单片机】RS485通信—基于STM32G474芯片

做项目需要用485通信来控制Go电机参考资料:【【STM32F103C8T6系列】10. 实验例程——485(USART串口)通讯实验】 https://www.bilibili.com/video/BV19w411r7ka/?PDF: STM32G474 开发指南 正点原子 DMG474 开发板教程 第28章485只是物理层,代码逻辑还是UART串口通信,相当于是电路有RS485转换芯片,所以还是用UART串口通信方式。

m0_48808835的博客 3647

vs2010调试技巧

调试可以深入程序内部,观察运行时各个变量的值。调试可以解决程序中出现的bug,同时还可以用来研究一些自己不太熟悉的语言特性和技术。下面说一些工作中遇到的VS2010调试技巧。 一、Ctrl+F10 运行到光标,快速执行到光标所在的代码处。 二、条件断点 设置断点后,右击断点即可进行条件断点设置。 1、断点条件 例如,在一个1000次的循环体内部设置断点,你希望当循环进行到900次后中断

Dream home 1799

64.qt quick-qml使用高德地图插件实现V2版本(新增:位置搜索、路径规划、轨迹编辑等)

qt quick-qml高德地图插件(新增:位置搜索、路径规划、轨迹编辑等) Qt地图插件,使用简单方便,不用浏览器内核,运行高效迅速 跨平台支持,(Qt Windows(MinGW, MSVC)\Linux(桌面、嵌入式)\Android\IOS\等) 在线更新瓦片地图下载,并且支持缓存保存离线地图实现.........

抵抗时间扭曲,坚持做一件有意义的事 6127

VS2022实用调试技巧超详解

1. 什么是 bug 2. 什么是调试(debug) 3. Debug和 Release 4.VS调试快捷键 4.1 环境准备 4.2 调试快捷键 5. 监视和内存观察 5.1 监视 5.2 内存 6. 调试举例1 7. 调试举例2 9. 编程常见错误归类 9. 1 编译型错误 9.2 链接型错误 9. 3 运行时错误

fhvyxyci的博客 7063

OpenClaw一人公司落地案例:本地商家营销智能体月赚3万的秘密

角色:本地商家营销专家## 核心目标为商家生成高转化率的抖音营销策略,最大化 ROI。## 输入数据- 商家名称: "XX奶茶店"- 过去 30 天视频播放量: 12,000- 客单价: 28 元- 竞品平均播放量: 15,000- 市场趋势: rising## 策略生成规则1. **内容类型**:根据客单价推荐- < 30 元:美食探店 + 优惠券- > 30 元:场景化故事 + 会员权益2. **发布时间**:根据历史数据- 18:00-20:00 高峰期。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 542

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VS实用的调试技巧

前面的内容我们已经讲到了函数,但是,很多人对函数调试不是很熟悉,这期我们来讲一下VS函数调试技巧当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。这个找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。调试⼀个程序,⾸先是承认出现了问题,然后通过各种⼿段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码,重新测试。

吴先生的博客 2110

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VS2022实用调试技巧

•Debug被称为调试版本,包含调试信息,并且不做任何优化,便于程序员调试程序•Release被称为发布版本,里面的程序往往已经被程序员进行了各种优化,使得程序在代码大小和运行速度上都是最优的—>用户使用。

Siri_s12的博客 3652

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【C语言】VS实用调试技巧

本文介绍了C语言编程中的实用调试技巧。首先解释了"bug"一词的起源及其含义,并阐述了调试的概念和重要性。文章对比了Debug和Release版本的区别,详细讲解了VS调试环境下的快捷键使用,包括F9(断点)、F5(启动调试)、F10(逐过程)和F11(逐语句)。还介绍了监视窗口和内存观察两种调试方法,通过具体代码示例展示了如何分析内存布局。最后将编程常见错误分为编译性、链接性和运行时错误三类,强调了调试在解决运行时问题中的关键作用。掌握这些技巧能有效提升程序员对代码的理解和问题解决能力

qq_64809564的博客 2419

VS2022 实用调试技巧

当我们的程序出现bug时,我们需要找出问题所在,然后解决问题重新测试,这个找出问题的过程就称之为调试,英文叫做Debug,意为“消灭bug”。

Celia的博客 3374

vs常用调试技巧

调试

技术不止是工具,也是探索世界的方式 1524

程序员必备的VS调试技巧

文章目录一、什么是bug二、什么是调试及调试的重要性1、什么是调试2、调试的基本步骤3、Debug和Release的介绍三、Windows下VS常用调试快捷键四、VS常用调试技巧1、查看临时变量的值2、查看内存信息3、查看调用堆栈4、查看反汇编5、查看寄存器五、如何写出好(易于调试)的代码1、什么是高质量的代码2、常见的代码技巧3、优秀代码示范6、编程中常见的错误1、编译型错误2、链接型错误3、运行时错误 一、什么是bug Bug一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺

在平淡的日子里寻找存在的价值 6515

关于VS2022的一些调试技巧

 都说工欲善其事必先利其器,诚然,在开发中也是如此,对开发工具的熟练使用能够大大提高你的开发效率,也能在你遇到bug时能够快速精确地定位到错误所在,今天将分享一些我在学习过程中对vs2022这款开发工具的一些调试技巧以及一些编程常见的错误总结。

m0_74476035的博客 1105

VS2022调试技巧

我们写代码的过程中,会存在问题,那我们就需要找到这个问题,并解决。那找问题的过程就是调试debug (消灭bug)的意识;调试代码的时候我们发现了问题,首先我们要承认出现了问题,找到问题的所在,再通过逐过程或者逐语句来观察细节,再去修复代码。

2303_81091851的博客 1919
上一篇: Direct-X学习笔记--三维摄像机
下一篇: 游戏Entity设计不完全整理
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值