vs2022的一些调试技巧——远程调试&线程检查&性能检查

这篇具有很好参考价值的文章主要介绍了vs2022的一些调试技巧——远程调试&线程检查&性能检查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

visual studio一直都是.net/c#开发人员最受欢迎的编译器,除了强大的代码提示和项目模板,还拥有大量的调试工具,这一期我们介绍下code freeze阶段的一些调试技巧。包括测试环境/生产环境下的远程调试,线程调试,以及性能监控调试。

目录
  • 远程调试
    • 1 安装
    • 2.调试
  • 线程调试
  • 性能调试

远程调试

当我们的程序所在的目标机器没有跑源码所需的sdk或者没办法安装vs的时候,我们需要对目标机器上正在运行或者即将运行的应用进行调试。我们通过远程调试在本机上对目标机器调试。

1 安装

Remote Debug下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/?rr=https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging?view=vs-2019
vs2022的一些调试技巧——远程调试&线程检查&性能检查
选择下载进行安装,最后管理员运行。
vs2022的一些调试技巧——远程调试&线程检查&性能检查
查看目标机运行所使用的端口号
vs2022的一些调试技巧——远程调试&线程检查&性能检查

2.调试

1.调试->附加进程
修改对应的目标主机的端口和IP地址
vs2022的一些调试技巧——远程调试&线程检查&性能检查

2.选中对应的进程点击附加
vs2022的一些调试技巧——远程调试&线程检查&性能检查

3.我们贴上一段代码,代码会死循环打印一个自增的数

static void Main(string[] args)
{
    int i = 0;
    while (true) 
    {
        Console.WriteLine(++i);
        Thread.Sleep(1000);
    }
}

我们在目标主机运行起来,然后在本地利用源码进行远程调试,并且加上一个断点。发现断点进来了,并且程序不再打印,则调试成功。
vs2022的一些调试技巧——远程调试&线程检查&性能检查

线程调试

我们可以利用visual studio的线程窗口来查看目前所有的活动线程的运行情况以及线程目前在代码何处运行。该功能配合远程调试可以很好的观察生产或者测试环境下的死锁问题。当然开发环境下也一样。

我们来调查一个死锁。
先实现一个简单的死锁程序:声明两个锁对象,并且用两个线程各自占用一个锁,再去索要另外一个锁,形成死锁。

private static object _lock = new object();
        private static object _lock_1 = new object();
        static void Main(string[] args)
        {
            var task1 = Task.Run(DeadLock);
            var task2 = Task.Run(DeadLock_1);

            Task.WaitAll(task1,task2);
            Console.WriteLine("Hello, World!");
        }

        private static void DeadLock()
        {
            lock (_lock)
            {
                Thread.Sleep(200);
                lock (_lock_1)
                {
                    Console.WriteLine("DeadLock");
                }
            }
        }

        private static void DeadLock_1()
        {
            lock (_lock_1)
            {
                Thread.Sleep(200);
                lock (_lock)
                {
                    Console.WriteLine("DeadLock_1");
                }
            }
        }

运行程序之后,将程序中断
vs2022的一些调试技巧——远程调试&线程检查&性能检查
点击调试->窗口->线程
可以看到两个工作线程,双击可以查看该线程中断时所处的位置。从而可以分析线程是否阻塞在这里,是否是形成问题的关键。
vs2022的一些调试技巧——远程调试&线程检查&性能检查

vs2022的一些调试技巧——远程调试&线程检查&性能检查

性能调试

VS自带的性能监控工具提供了一些数据的监控和分析,比较常用的就是CPU使用和内存IO的监控。它支持本地启动项目的监控以及进程和可执行程序的附加。

点击调试->性能追踪(Performance Profiler)
vs2022的一些调试技巧——远程调试&线程检查&性能检查

我们来实现一个CPU密集型的代码

        static async Task Main(string[] args)
        {
            await MultiRunning();
            SomeThing();
            Console.WriteLine("Hello, World!");
        }

        //启动20个线程
        static async Task MultiRunning()
        {
            Thread[] tasks = new Thread[20];
            foreach (var index in Enumerable.Range(0, tasks.Length))
            {
                tasks[index] = new Thread(() =>
                {
                    while (true)
                    {
                        int a = 1;
                        Thread.Sleep(200);
                    }
                });
            }

            int i = 0;
            await Parallel.ForEachAsync(tasks, (task, source) =>
            {
                i++;
                task.Start();
                return ValueTask.CompletedTask;
            });

            Console.WriteLine("执行了" + i);
        }

        static void SomeThing()
        {
            while (true)
            {
                Console.WriteLine("I AM Alive");
                Thread.Sleep(200);
            }
        }

我们使用Performance Profiler对启动项目的CPU进行监控。
vs2022的一些调试技巧——远程调试&线程检查&性能检查
vs2022的一些调试技巧——远程调试&线程检查&性能检查
当我们觉得程序运行的差不多了,我们可以点击停止搜集,然后visual studio会给我们生成一些分析数据
vs2022的一些调试技巧——远程调试&线程检查&性能检查
点击打开详情,然后根据函数来分析占用的CPU,默认也是按照函数所占用的CPU时间片来进行排序。选择我们程序的函数,双击Main函数,可以看到里面的方法各自的占用,从而判断找出高CPU的函数。
vs2022的一些调试技巧——远程调试&线程检查&性能检查

以此类推,如果需要寻找高IO的根源点,也可以使用VS自带的Performace Profiler来追踪代码的执行性能。文章来源地址https://www.toymoban.com/news/detail-472004.html

到了这里,关于vs2022的一些调试技巧——远程调试&线程检查&性能检查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS 多线程调试和多线程DLL调试选项功能

            区别是动态链接还是静态链接C运行时库(C runtime Library, CRT)。         如果是动态链接(MD/MDd),你的程序就依赖C运行时的动态链接库(比如VS2010的msvr100.dll),当你的程序在其他没有这个dll的电脑上运行就会出现错误(找不到这个dll)。         如果是

    2024年02月12日
    浏览(33)
  • 使用Windows平台的VS2022来调试AKStream

    0x00环境说明 运行宿主机:Windows 10 IDE:VS2022 运行虚拟机:.Net6.0.200 AKStream commit节点:f0077ab8 ZLMediaKit commit 节点:bd37eaed ffmpeg 版本:ffmpeg version 4.4.1-full_build VLC播放器:3.06(可使用其他的可播放流的播放器) 0x01 安装ffmpeg 1、下载ffmpeg绿色包网站 2、下载完成后,解压到你的安

    2024年02月02日
    浏览(36)
  • 编程技巧 --- VS如何调试.Net源码

    如题,在VS中如何调试 .Net 源码呢? 一般来说,VS2022,都是默认启用 F12 转到定义能够看到源码,如果大家发现自己无法使用 F12 查看源码,可以在 \\\"工具\\\" - \\\"选项\\\" - \\\"文本编辑器\\\" - \\\"C#\\\" - \\\"高级\\\" - \\\"转到定义\\\",勾选所有选项就对了。 但是光以上的操作还是不够的,这样的可以查

    2024年02月05日
    浏览(81)
  • 精通 VS 调试技巧,学习与工作效率翻倍!

    ​ ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ ​ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 ​ 所属专栏:C语言学习 ​ 贝蒂的主页:Betty‘s blog ​ 当我们写代码时候常常会遇见输出结果不符合我们预期的情况,那这时候我们该怎么办呢? 这时候我们就需要 调试(debug) ,调试简单来说就

    2024年01月24日
    浏览(41)
  • VS2022 And QtCreator10 调试 Qt 源码教程

    简 述: 记录使用 Visual Studo 2022 和 QtCreator10 调试 Qt 5.15 源码和 加载 .pdb 的方法。 本文初发于 “ 偕臧的小站 ”,同步转载于此。 源码 :*.h *.cpp 符号调试包 :*.pdb (属 Windows 专有) 动态链接库: *.dll 静态链接库: *.lib (通常是前者,也可以是 .dll 的符号信息,编译时刻使用

    2024年02月12日
    浏览(36)
  • Visual Studio 2022 你必须知道的实用调试技巧

    目录 1、什么是bug?  2.调试是什么?有多重要? 2.1我们是如何写代码的? 2.2又是如何排查出现的问题的呢? ​编辑 2.3 调试是什么? 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍 3.1 调试环境的准备  3.2学会快捷键 3.3 调试的时候查看程序当前信息 3.3.1 查看

    2024年02月12日
    浏览(92)
  • 一文带你快速掌握爬虫开发中的一些高级调试技巧

      做过爬虫开发的人都知道,浏览器的开发者工具基本是离不开的,有时候在准备开发一个web爬虫的时候,往往最先开始的就是打开浏览器开发者工具进行请求、参数、响应…的分析。用好了确实是可以大大的帮我们提高调试代码的效率! 本文将介绍几个高级的工具使用技

    2024年02月08日
    浏览(59)
  • VS 远程调试-Remote Debugger

    小编开发的exe在本地可以正常运行,放到别的PC上经常遇各种各样的奇葩问题,但是研发工作环境又无法复现。这个时候远程调试可以发挥它强大的功能,在本地就可以调试运行在现场环境的程序。 有两种方式能够获取Remote Debugger 1.从官网下载:https://learn.microsoft.com/en-us/vi

    2024年02月16日
    浏览(36)
  • VS2017远程调试详解(内网、外网)

    远程调试可分为:附加到进程与远程Windows调试器两种方式 两种方式区别可简单理解为: (1)附加到进程:需将本地编译完成后的exe与相关dll拷贝至目标电脑;此方式前提被调试软件可正常打开 (2)远程Windows调试器:配置完部署目录及相关参数后,VS会自动部署相关exe和

    2024年02月05日
    浏览(44)
  • Visual Studio 2022 程序员必须知道高效调试手段与技巧(上)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,前面给大家介绍了Visual Studio 2022 下载与安装今天我们就来介绍一下 VS2022 最强大的功能调试?    ⛳️ 调试可以说是一个

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包