再分享 5 个 vs 调试技巧

简介: 再分享 5 个 vs 调试技巧

前言

之前在 《5 个非常实用的 vs 调试技巧》《继续分享 5 个实用的 vs 调试技巧》中分享了 10 个我认为非常值得了解的 vs 调试技巧,本周继续分享 5 个很实用的调试技巧。

1. 显示下一条语句

在调试时,遇到断点中断后,为了更加清楚的了解程序逻辑,经常需要翻看调用栈,查看相关代码。看完后,想快速返回到中断的地方,之前基本上是通过以下两种方法返回。

  1. ctrl + alt + c 调出调用栈,然后双击最上方的栈帧来返回。
  2. 按一下 F11 让程序运行一小步(有时候就进到函数里了,很不好)。

这两种方法都比较麻烦。其实, vs 中有一个非常实用的功能,可以快速的回到中断处。这个功能就是 显示下一条语句

中断后, 右键显示下一条语句 即可显示下一条语句。在 vs2013 中对应的快捷键是 alt + *

show-next-instruction.png

小贴士:alt + * 是小键盘上的 *

2. 设置 symbol

不知道各位在调试的时候,有没有遇到过 vs 特别慢的情况,跟卡死了一样。很有可能是在加载符号。有两个方法可以加速:

  1. 断网。断网后可以使加载符号的操作失败的更快。但是会导致有些模块的符号加载不上。
  2. 设置符号加载策略。可以只为特定模块加载符号。通过 调试 -> 选项和设置 ,然后选择 调试 -> 符号 即可设置。
    vs-symbol-setting.png

说明:

如果愿意,可以随时手动为特定模块单独加载符号。

可以通过 调试 -> 窗口(W) -> 模块(O) 或者快捷键 Ctl + Alt + U 打开模块列表界面。

open-vs-module-window.png

然后在选中的模块上 右键 -> 加载符号 即可。

vs-module-window.png

3. 调试子进程

windbg 有一个非常给力的功能就是调试子进程。当需要调试子进程的时候,不用手动附加到子进程了,而且不必担心错过子进程中的初始化代码了。据我所知,vs 本身并不支持这项功能,需要使用官方提供的插件 —— Microsoft Child Process Debugging Power Tool。该插件支持 vs2013~2019

具体使用介绍 请参考 Introducing the Child Process Debugging Power Tool

4. 伪变量

了解一些 vs 中的一些伪变量非常有必要。比如,当前进程的环境变量,命令行等信息。

Pseudovariables Function
$err 获取 LastError 的值,等同于 GetLastError()
$err,hr 带文字解释的 LastError
$env 进程环境变量
$cmdline 命令行。
$pid 进程 ID
$tid 当前线程 ID ,经测试,vs2013 不支持。

更多的伪变量请参考 Pseudovariables in the Visual Studio debugger

5. 修饰符

不知道你是否曾经想在 vs 中查看 utf8 类型的字符串呢?是不是不太方便?其实,在 vs 中有一些观察变量的修饰符,可以方便的按照一定的规则查看变量。简单罗列几个常用的修饰符,如下表:

Specifier Function
s8 UTF-8 显示字符串
su UTF-16 显示字符串
h (x) 16 进制显示数值
d 10 进制显示数值
c 按字符显示数值
[size] 把指针当成 size 大小的数组显示
expand(n) 显示第 n+1 个(索引从 0 开始)元素

更多的修饰符请参考 Format specifiers for C++ in the Visual Studio debugger

结语

熟练掌握一些调试技巧,对提高调试效率有很大帮助。不知道今天介绍的这 5 个调试技巧,有没有你喜欢的呢?

相关文章
|
缓存 前端开发 测试技术
(译)Python 官方团队在打包项目中踩过的坑
(译)Python 官方团队在打包项目中踩过的坑
306 2
|
机器学习/深度学习 并行计算 计算机视觉
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
11967 1
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
|
虚拟化 Docker 容器
DockerHub被禁掉的应对之法
在DockerHub被禁用或访问受限的情况下,可以选择使用其他公共镜像仓库、本地私有镜像仓库或镜像加速器。这些替代方案不仅能够保证容器化应用的正常运行,还可以根据具体需求提供不同的功能和服务。确保按照文档和指南进行配置,以实现最佳效果和性能。
3107 21
|
IDE 测试技术 项目管理
集成开发环境(IDE)的使用:提升Visual Basic开发效率的工具和技巧
【4月更文挑战第27天】本文探讨了如何使用Visual Basic IDE提升开发效率,包括理解IDE组件、利用代码编辑器的智能功能、通过界面设计器设计GUI、使用调试和测试工具、有效管理项目与版本控制、掌握快捷键和宏、定制IDE以及利用学习资源。通过充分利用这些工具和技巧,开发者能更快地编写高质量代码,高效管理项目,从而提升整体开发效率。随着IDE的持续发展,开发者应不断学习新特性以适应进步。
459 1
|
前端开发 JavaScript API
前端界的秘密武器:掌握这些框架,让你轻松秒杀99%的同行!
前端开发日新月异,掌握几个明星框架如React、Vue.js和Angular,不仅能让工作更得心应手,还能轻松超越同行。React以高效的虚拟DOM和组件化著称;Vue.js简洁易懂,灵活性高;Angular提供全面的解决方案,适合大型应用。此外,轻量级的Svelte也值得关注,其编译时处理设计提升了应用性能。掌握这些框架,结合深刻理解和灵活运用,助你在前端领域脱颖而出。
248 9
|
小程序
微信小程序的注册流程
微信小程序的注册流程
951 0
|
存储 数据可视化 搜索推荐
单细胞分析 | 基因组区域的可视化 (1)
单细胞分析 | 基因组区域的可视化 (1)
单细胞分析 | 基因组区域的可视化 (1)
若依修改---白名单怎样添加,怎样在初始化页面初始为自己的页面
若依修改---白名单怎样添加,怎样在初始化页面初始为自己的页面
若依修改---白名单怎样添加,怎样在初始化页面初始为自己的页面
|
机器学习/深度学习 数据采集 大数据

热门文章

最新文章