我知道你现在在想什么。断点?真的吗?关于断点有什么需要掌握的?你按F9然后停在代码行。如果你是这么想的,这篇文章是给你的:继续读

Visual Studio提供了一组相当丰富的断点类型和操作,可以使您的调试体验更加舒适和高效。我们将在这篇文章中讨论四种断点。

条件断点

定义断点时,可以将其与条件关联(右键单击断点并选择何时命中)。在这种情况下,您几乎可以使用任何可以在即时窗口中计算的C++/C#语句,包括复杂表达式。调试器将在每次到达断点时计算表达式的值,并且仅当其计算结果为true时才会中断。

请注意,尽管断点可能只偶尔中断,但它仍然会减慢应用程序的速度,因为调试器必须在应用程序暂停时计算表达式,然后才能恢复它

追踪点---Tracepoints

断点不必中断应用程序的执行。在许多情况下,您只需要检查某些变量或表达式的当前值,然后立即继续执行。这不需要更改代码以包含跟踪语句:您只需将断点与跟踪操作相关联,跟踪操作将向Visual Studio输出窗口显示您想要的任何消息。同样,您可以显示复杂的表达式。

函数断点

即使没有函数的源代码,也可以在函数中设置断点。只需转到Debug>New Breakpoint>Break at函数并指定函数名。这也可以从“调用堆栈”窗口中获得-只需单击一个帧并按F9在该函数上放置一个断点。

数据断点

修改特定内存位置时,可以使用数据断点停止调试器。这个超级强大的特性对于多线程应用程序和各种内存损坏场景非常有用,在这些场景中,内存位置会以意外的方式修改。与源断点不同,您不会将断点放在代码行上。相反,您可以使用Debug>New Breakpoint>newdatabreakpoint菜单项指定内存位置。

不幸的是,这个特性只适用于C/C++应用程序。当托管对象在几代之间升级或发生堆压缩时,它们在堆中移动,使它们无法跟踪。

总结

如您所见,通过组合条件断点和跟踪点,您可以获得应用程序执行的跟踪,而无需向代码中添加任何跟踪语句或重新启动调试会话。通过添加函数断点和数据断点,可以进一步提高调试工作的灵活性。享受您的Visual Studio断点!

掌握Visual Studio断点的更多相关文章

  1. Visual Studio断点调试, 无法监视变量, 提示无法计算表达式

    在使用Visual Studio 2012进行断点调试时,对某个变量添加监视,出现"无法计算表达式"的提示. 解决办法:依次点击菜单栏中的"调试"→" ...

  2. Visual Studio 断点无法命中怎么办?

    经常远程调试服务器打断点是空心的,很抓狂,正确的方法应该是 #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { System.Diagnos ...

  3. Visual Studio调试之断点基础篇

    Visual Studio调试之断点基础篇 我曾经问过很多人,你一般是怎么调试你的程序的? F9, F5, F11, F…… 有很多书和文章都是介绍怎么使用Visual Studio编写WinForm ...

  4. Visual Studio调试之断点进阶篇

    Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...

  5. Visual Studio 当前不会命中断点的问题

    这个问题一般有两个版本 1.当前不会命中断点,还没有为该文档加载任何符号. 2.当前不会命中断点,源代码与原始版本不同. 要解决第一个问题,就要了解一种文件格式“PDB(Program DataBas ...

  6. 使用Visual Studio加断点调试Unity游戏的C#代码

    1.安装Unity5.2.5 2.安装Microsoft Visual Studio 2013 3.打开VS2013,点击Tools | Extensions and Updates,然后在这个界面点 ...

  7. Visual Studio Code 通过 Chrome插件Type Script断点调试Angular 2

    1. 下载Visual Studio Code (https://code.visualstudio.com/) 2. 安装插件Debugger for chrome 3. 确定tsconfig.js ...

  8. 【已解决】在 Visual Studio 中设置 JavaScript/TypeScript 的断点 脚本出现自动中断错误

    运行ASP.NET Core 程序出现错误如下: 已启用 Visual Studio 中的 Chrome 脚本调试 在 Visual Studio 中设置 JavaScript/TypeScript ...

  9. 使用Visual Studio 调试断点不起作用的问题解决办法 调试Revit CAD 不能进入断点

    随着Visual Studio 2010正式版的发布,相信不少人都像我一样升级到了Visual Studio 2010.那么您在使用VS2010在AutoCAD,Map 3D或Revit的.net应用 ...

随机推荐

  1. (五)golang--常用的一些玩意

    \t--制表位 \n--换行符 \\--一个\ \"--一个” \r--回车 行注释://,一次性注释多行指令,选中代码后ctrl+/ 块注释:/* */ 代码规范: (1)官方推荐使用行注 ...

  2. python read readline readlines区别

    file 对象使用 open 函数来创建,下表列出了 file 对象常用函数read.readline.readlines区别: 1.从文件读取指定的字节数,size如果未给定或为负则读取所有. fi ...

  3. Ceph更换OSD磁盘

    目录 简介 更换OSD操作步骤 1. 故障磁盘定位 2. 摘除故障磁盘 3. 重建raid0 4. 重建osd 控制数据恢复及回填速度 简介 首先需要说明的是,ceph的osd是不建议做成raid10 ...

  4. redis启动出现错误 can't chdir ...

    启动redis出现以下错误:[15816] *********** # Can't chdir to ’**********‘ :No such file or directory 解决方法:手动创建 ...

  5. nginx产生【413 request entity too large】错误的原因与解决方法

    项目上在做上传文件(清单导入)的时候产生了这个错误: 从字面上看,说的是请求的实体太大的问题,那么可以联想到是HTTP请求中的Body大小被限制了的原因. Nginx中的[client_max_bod ...

  6. 元类理解与元类编程 《Python3网络爬虫开发》中第九章代理的使用代码Crawler中代码的理解

    __new__与__init__的理解 __new__()方法是在创建实例之前被调用的,它的作用是创建一个实例,然后返回该实例对象,它是一个静态方法. __init__() 当实例被创建完成之后被调用 ...

  7. 【模板整合计划】图论—有向无环图 (DAG) 与树

    [模板整合计划]图论-有向无环图 (DAG) 与树 一:[拓扑排序] 最大食物链计数 \(\text{[P4017]}\) #include<cstring> #include<cs ...

  8. lombok的@Accessors注解3个属性说明

    https://www.cnblogs.com/kelelipeng/p/11326936.html https://www.cnblogs.com/kelelipeng/p/11326621.htm ...

  9. WPF 页面导航

    <Button x:Name="btnReset" Click="btnReset_Click" Content="重 置" Grid ...

  10. Application类-应用程序生命周期

    1.创建Application对象 新建WPF程序后,排除掉WPF自动创建的App.xaml,我们自定义一个类,在该类的Main()方法中,创建Application对象,然后调用创建一个窗口对象,最 ...