visual studio调试器功能强大,能帮助开发者迅速定位并修复代码中的问题,提升开发效率与程序稳定性。
1、 直达目标语句
2、 调试时常需拖动黄箭头,控制语句执行与否,通常用鼠标直接拖拽实现。
3、 在Visual Studio 2017 15.3预览版中,新增了一种更便捷的跳转到指定行的方法:将鼠标悬停在目标代码行,出现绿色竖线和右箭头图标后,按住Ctrl键并单击左键,即可将调试指针移动到该行。随后继续点击下一步或按F5,程序便会从该位置继续执行,极大提升了调试效率。



4、 设置指定实例的断点
5、 有时实例的属性值会意外改变,为排查原因需在属性代码中设断点,但这样会影响所有实例,导致调试不够精准,难以定位特定对象的问题所在。
6、 调试时可通过创建对象标识并结合条件断点功能,为特定实例设置断点,从而精准定位问题,提升调试效率。操作步骤如下:
7、 首先创建一个类并初始化两个对象,修改PointX的值,随后为实例a的PointX变化设置断点,具体操作所示。

8、 调试时,右键点击实例a,选择创建对象ID,操作所示。

9、 此时将实例a赋值给\$1,在需添加断点处右键点击并选择Conditions…,所示。

10、 加入 \$1 == this 判断后,重新执行程序,在实例 a 的属性发生变化时触发断点,而在实例 b 属性变化时则不再触发,具体效果所示。
11、 注意对象ID记录的是内存地址,每次调试时会变化,需重新设置。

12、 附加进程重启
13、 附加到进程是开发者常用的功能。在Visual Studio 2017中新增了重新附加到进程选项,能够快速将调试器重新连接到上次附加的进程,省去重复查找的步骤,极大提升了调试效率,特别适用于需要频繁调试同一进程的场景,操作更便捷,节省时间。
14、 先附加到目标进程,随后点击停止调试,再选择调试选项,此时即可看到重新附加到进程的功能项,具体界面所示。

15、 显示全部线程
16、 调试时,工具栏新增在源中显示线程选项。启用后,若有线程暂停,对应代码行前将出现图标。鼠标悬停可查看线程信息,右键点击图标则弹出可执行操作菜单,方便快速管理与切换线程,提升多线程调试效率,操作直观便捷。
17、 该功能或降低调试效率,若无需求建议保持关闭状态。

18、 暂时关闭指定断点
19、 多线程调试时,可使用禁用断点功能临时关闭特定断点,避免其他线程因断点触发而中断,从而确保当前线程的调试流程不受干扰,具体操作所示。


20、 查看所有线程的调用堆栈信息
21、 在调试时,于命令窗口输入Debug.ListCallStack -AllThreads,便可查看各线程的调用堆栈信息,具体效果所示。该方法有助于分析多线程程序的执行流程与函数调用关系。

22、 可使用WinDBG命令~*k查看,具体操作所示。

23、 用无害方式评估效果
24、 在调试时,若需查看方法返回值但担心执行会引发副作用,可在监视窗口输入方法后追加, nse(即No Side Effects的缩写),以避免实际执行带来的不良影响。例如:MethodName(), nse,即可安全查看结果而不触发潜在问题。
25、 Add操作初始执行六次,因此testList的总数为6,具体所示。

26、 若想查看Add当前执行的返回值,可在监视窗口输入Add(1),但此举会带来副作用,导致testList的值被修改为7,具体效果所示。

27、 若要避免修改testList的原始值,需添加, nse参数。结果显示为8,但testList的原始值仍保持为7,具体效果所示。












