分享5个实用的vs调试技巧

并行堆栈

作用简介:

我们可以通过调用堆栈窗口查看当前线程的调用栈,局限是只能查看某个线程的调用栈,要想查看每个线程的调用栈得切来切去的,太麻烦。如果我们想同时查看多个线程的调用情况,我们可以使用并行堆栈窗口。顾名思义,并行堆栈窗口可以同时查看多个线程的调用栈。如果程序中的某个线程死循环了,我们想确定是哪个,这时候可以中断到 vs 中,然后打开并行堆栈窗口进行查看,基本上可以很快定位到出问题的代码。

打开方式:

调试的时候,通过 调试 -> 窗口 -> 并行堆栈 即可打开。在 vs2013 中对应的快捷键是 ctrl + shift + d, s 。

注意是按住 ctrl + shift,再按 d,松开 ctrl, shift 后再按 s。

说明:

我个人不太喜欢 vs 默认的中文翻译,我认为调用堆栈,并行堆栈翻译的并不准确,Call Stack 直译为调用栈就很好,因为函数调用跟堆一点关系都没有,而且 stack 直译过来也是栈,heap 才是堆,不知道为什么会把调用栈翻译成堆栈。希望有知道的小伙伴儿留言指点。

并行监视

作用简介:

相信,大家经常使用监视窗口查看变量,当我们想查看每个栈帧的局部变量的时候,我们需要切换到对应栈帧才能看到对应的值,是不是比较麻烦?并行监视窗口了解下?

打开方式:

调试的时候,通过 调试 -> 窗口 -> 并行监视 -> 并行监视1/2/3/4 即可打开对应的并行监视窗口。和监视窗口一样可以同时打开四个。

在 vs2013 中对应的快捷键是 ctrl + shift + d, 1/2/3/4 。注意是按住 ctrl + shift,再按 d,松开 ctrl, shift 后再按 1/2/3/4。

自动窗口

作用简介:

除了可以查看函数参数,局部变量的值意外,更有用的功能是查看函数调用的返回值。

打开方式:

调试的时候,通过 调试 -> 窗口 -> 自动窗口 即可打开。在 vs2013 中对应的快捷键是 ctrl + alt + v, s 。注意是按住 ctrl + alt,再按 v,松开 ctrl, alt 后再按 s。

混合调试

作用简介:

当我们需要调试的程序中有 .NET 代码,也有 c++ 代码时,开启混合调试非常有必要。

打开方式:

通过 F5 调试时的设置方法。

通过附加进程进行调试时的设置方法。

务必注意: 有时候我们设置断点不生效,可以检查一下调试方式是否选对了。如果我们只想调试 C++ 代码,可以只勾选 Native,如果只想调 .NET 代码,可以根据实际情况勾选 Managed(v4.5, v4.0) 或者 Managed(v3.5, v3.0, v2.0),如果都想调那就都勾选。

使用断点修改变量的值

作用简介:

相信大家在调试的时候都设置过断点,但是你是否知道我们可以在调试的时候通过断点来改变变量的值?

调查问题时,想手动修改值来验证一下我们的想法是否正确,但是又不想修改代码,也不想中断下来后,手动修改,因为可能需要手动修改 N 次,改过的小伙伴儿应该有体会。我们可以通过这个小技巧来自动帮我们改变变量的值。

注意:

1、 表达式不要加分号!!!

2、 高版本的 vs 才支持,vs2019 亲测有效,其它版本没测试。

注意事项:

1、 程序需要中断到 vs 后,才能执行查看调用栈,观察变量等操作。

2、 不需要的时候,请关闭并行堆栈等窗口,因为刷新信息对调试速度有一定影响,如果觉得 vs 调试速度慢了,可以关闭不必要的窗口。

3、 vs2013 中默认的快捷键设计的比较蛋疼,使用的时候需要注意。

总结

当然,还有很多很多其它调试技巧(包括上一篇文章中提到的 natvis),快捷键等等,后续会慢慢分享给大家。欢迎大家在群里多交流。

参考资料

https://docs.microsoft.com/en-US/visualstudio/debugger/debugger-tips-and-tricks?view=vs-2019

以上就是分享5个实用的vs调试技巧的详细内容,更多关于vs调试技巧的资料请关注我们其它相关文章!

(0)

相关推荐

  • VSCode1.4 搭建Golang的开发调试环境(遇到很多问题)

    浪费我一天时间!  唉唉唉唉唉~ 下载包的位置 :  http://golangtc.com/download 386 指32位系统            amd64 指64位系统 还没有发现有什么区别! 1. liteIDE 2.Sublime Text 2 3.Google Go language IDE built using the IntelliJ Platform 4.VS Code (强烈推荐) 真的浪费了我好长时间啊!!!!!!!!!! 如果不是安装到默认路径将需要  手动配置

  • 使用VSCode开发和调试.NET Core程序的方法

    电脑不想装几十个G的 VS2017,那就用 VS Code 吧 目标: 创建一个类库项目 Skany.Core,并用 Nuget 引用第三方组件 Hash 实现加密算法 创建一个单元测试项目 Skany.Tests,引用类库 Skany.Core,并测试其中的方法 创建一个控制台应用程序项目 Skany.Output,引用类库 Skany.Core,并输出方法执行结果 创建一个解决方案 Skany.sln,包括以上三项目 环境 .NET Core SDK 2.2.202 开始 首先在 VS Co

  • Vscode Remote Development远程开发调试的实现思路

    简介 对我而言 直接修改.调试服务器代码,当然可以安装插件,包括代码补全等等,和使用本地vscode一样的体验. 直接编辑.修改服务器的文件,使用 code filename.即可 配置 服务端安装ssh-server 一般都自带了.建议 使用ssh localhost命令,生成下.ssh目录. 方便配置密钥登陆,替代繁琐的密码登陆. 客户端 安装插件,Remote Development. 安装插件,Remote SSH 配置 一定要修改默认的配置文件.我的是:D:\zk.ssh\config

  • VScode Remote SSH通过远程编辑与调试代码

    Visual Studio Code 最新的Insider版本中加入了remote SSH功能,可以实现代码的远程调试与文件访问. 方法非常简单,这里总结记录一下. 补充说明 一个Error的解决方案,这块可以先不看 远程Debug的时候会有一个error,修改luanch.json文件即可 Console按我上面这个截图更改. 参考github issue:https://github.com/microsoft/vscode/issues/73867 懒得看ISSUE的话就按照我上面那个改就

  • VSCode Golang dlv调试数据截断问题及处理方法

    使用VSCode对Golang程序进行调试时会遇到数据截断问题,string只显示前64个字符,array只显示前64个数据.经查dlv是支持以参数方式来控制的. 发现VSCode的Golang插件里面有个叫做go.delveConfig的配置,是可以设置dlv参数的.分享一下我的整个Golang配置: "go.buildOnSave": "off", "go.formatTool": "goimports", "g

  • VsCode搭建Spring Boot项目并进行创建、运行、调试

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.springboot等所需要的扩展. 开始步骤: 在 Visual Studio Code 中打开扩展视图(Ctrl+Shift+X). 输入"java"搜索商店扩展插件. 找到并安装Java Extension Pack (Java 扩展包),如果你已经安装了Language Support

  • 基于VSCode调试网页JavaScript代码过程详解

    一.调试准备 Windows10 64bits IDE:Visual Studio Code1.28.2 安装插件:Chrome(安装方法:Debug -> Install Additional Debuggers... -> Debugger for Chrome,重新启动vscode即可.) 二.调试配置 首先该插件运行需要安装有本地服务器,其次有两种配置方式,分别为: (1)launch:重新打开一个chrome来显示应用程序 (2)attach:在已经运行的chrome中显示应用程序

  • VSCode 搭建 Arm 远程调试环境的步骤详解

    简介 前提条件: 确保本机已经安装 VS Code. 确保本机已安装 SSH client, 并且确保远程主机已安装 SSH server. VSCode 已经安装了插件 C/C++. 本次搭建的环境: 主机:windows 10 服务器:ubuntu 16.04 VSCode 版本:February 2020 (version 1.43) Arm:海思 3559A (已配置好编译工具链和 gdb server) 连接远程主机 Remote Development 首先安装 Remote Dev

  • 如何通过vscode运行调试javascript代码

    初次正式要写 javascript 相关的代码,想要用 vscode 直接编译 js 代码,但是发现没有那么简单,需要配置好 launch.json 文件,现已经在vscode上编译过去并且可以调试 javascript 代码,总结了两种方法,分享给大家. 方法一: 在 js 后缀文件中写 javascript 代码. 1. 环境配置: (1). 需要安装 nodejs (在Bing搜索中输入 nodejs, 找到nodejs官网,然后找到适合你电脑配置的安装包进行下载安装,最后要输入 node

  • 解决VScode配置远程调试Linux程序的问题

    下面看下VScode远程调试Linux程序的问题,具体内容如下,一起看看吧! 最近在Linux上调程序,但是gdb使用属于入门阶段,主要是没有图形化界面直观.在网上查找了有两个方案可选,一个是通过VisualStudio2019的远程调试功能,因为最近一直在用VScode,所以没有试,之后有时间了可以试一下.另一个方案就是通过VScode的Remote Development插件(微软官方提供的)进行远程调试.本文介绍下这个方案. 虽然网上也有其他的文章进行介绍,但是都是写的成功的情况,没有写出

  • ros项目调试:vscode下配置开发ROS项目的详细教程

    引言 在vscode下面配置用于ROS项目开发的环境 包括头文件目录的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件. vscode头文件目录配置安装"c/c++"插件 到vscode左边栏的EXTENSIONS中,搜索"C/C++"并安装 生成c_cpp_properties.json vscode自身配置文件全部在./.vscode/目录下 但是,在最开始对自己新建的目录和文件进行编辑后,文件夹里面是没有.vscode目录的 同

  • 使用VSCode和VS2017编译调试STM32程序的实现

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台(基于Java)的,比如STM32CubeMX,MCUFinder,STM32CubeProgrammer等.17年年底收购了truestudio的开发公司-Atollic.这个公司的IDE就是基于Eclipse使用GNU套装的. 官方都支持了,那我们有必要了解一下.要是好用,说不定就可以淘汰老旧的

随机推荐