一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

2023-06-05 0 527

AWS 联手博客园为开发人员送社会福利,11.1-11.30注册登记 AWS 帐号立享12个月完全免费优惠券+500英镑服务工程项目减免券。

一:大背景

1. 鬼故事

每天工程项目预交货的这时候,协进会遇到各式各样残花的坑,我真的有必要性剖析呵呵和怎样加速化解的,让而后人避避坑,这篇就谈谈他们的由是布季谢:我去,邻近地区自然环境标识符跑的哧溜,上了试验自然环境出难题我去, 服务工程项目器端提供更多的 dll 达马藏县 bug 了

二:三个大坑的化解方案

1. 邻近地区自然环境没难题,上了试验出难题

坚信许多好友都有我这种类似于的遭受,没错流程标识符,命令行都那样,挪了三个窝就出难题,你说烦人不,难道难题出了那是不是加速化解呢?对,是用增容,但流程布署在 centos 上,送三个 visualstudio 上来也不现实生活,在此种情色前提下还想增容是不是办呢?极好,能上远距增容,接着就迅速搜到了试验电脑中的某三个命令行弄错了,事的原委弄清楚了,接下去就看一看是不是同时实现 local 到 centos 的 远距增容。1) 试验标识符

为的是方便快捷模拟,我就在 Action 中加载 strategy 命令行。

    public class HomeController : Controller

    {

        public IActionResult Index()

        {

            ViewBag.strategy = Environment.GetEnvironmentVariable(“strategy”

);

            return

 View();

        }

    }

2) 安装 SSH

要远距增容,需要在远端机安装 SSH,因为后面附加进程增容 就要借助 SSH 打通。

yum install openssh-server unzip curl

安装完成后,就能看到 22 端口已启动

[root@localhost data]# netstat -tlnp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1126/sshd           

tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      3037/cupsd

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1739/master

tcp6       0      0 :::22                   :::*                    LISTEN      1126/sshd

tcp6       0      0 ::1:631                 :::*                    LISTEN      3037/cupsd

tcp6       0      0 ::1:25                  :::*                    LISTEN      1739/master

3) 流程的发布配置发布配置上,第三个要确保是 debug 版本,第二个要确保是 可移植模式 (Portable), 如下图:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试4) 使用附加进程增容在菜单栏依次选择:Debug ->  Attach To Process,接着填写 ssh 需要的各式各样信息,如下图:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试点击 Connect 后,就能看到远端电脑的 dotnet流程 进程号,选择该进程进行附加,在 Select Code Type 中选择Nanaged (.NET Core for Unix)即可,如下图:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试5) 顺利增容在 浏览器中键入:http://192.168.142.130/Home/Index ,能看到我的 C# 标识符被命中,也顺利的拿到了远端电脑的 命令行,难题也就迎刃而解。一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

2. 服务工程项目器端 dll 出 bug 了

增容流程除了使用 F9 进行增容,坚信也有不少好友知道断点是能编辑的,比如说:设置表达式断点,过滤器断点,命中次数断点,动作断点,下如图:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

第三个难题就来了,这些花式断点,你真的会用吗?真的会经常用吗?

让我来回答的话,不到万不得已我是不会用的,我更愿意在标识符中加入利于增容的试验语句,原因有三点:更加灵活这个显而易见,在面板中设置前提相比用纯语句设置要麻烦得多,点来点去,而且还要前提叠加,复杂的很,我是不喜欢。功能强大编辑面板上只有简单的并且关系,而且各个前提还是同级别的,无法做到各个前提的或者关系和层级或者递归的包含关系,所以。。。没办法。。。更易于保存这个就有意思了,在断点上右键是弹出编辑面板,点击左键是关闭断点,难题就出在这里,经常由于手贱,本想点右键结果点了左键 😨😨😨。。。。好不容易设置好的前提没了。。。真的没了😭😭😭,从此以后,路转黑。如下图:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

那这么说断点编辑真的没用吗?我真的只有在不能修改语句的增容场景下能够大显身手,比如我碰到的增容厂家封装的dll,哈哈,难道说到了断点,我就用 dnspy 模拟几个断点给大家复习呵呵吧!

1) 试验标识符

为方便快捷模拟,用 for 循环案例是最好的。

        public static void Main(string[] args)

        {

            var sum = 0

;

            for (int i = 0; i < 10000

; i++)

            {

                sum += i;

            }

Console.WriteLine($”sum={sum}

);

        }

2) 我希望在 sum = 1035 的这时候命中断点这个用前提表达式断点就能了,非常简单,如下所示:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试3) 找到所有能够被 1800 整除的数,并且记录下当时的 i 和 sum 值这里就能用到 Action 断点的日志记录,在 for 循环迭代中,不需要中断断点,只需记录某三个特定状态下当前的 i 和 sum 的值,对增容标识符非常有帮助,如下图:一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

三:总结

总的来说这三个经验也算我一步一步踩坑过来的,如果能帮到你就更好了,本篇就聊这么多,下篇再见!

作者:一线码农

博客园文章地址: 

cnblogs.com/huangxincheng/p/13924326.html

阅读更多博客园云计算之路 – 出海记微前端大赏新版 C# 高效率编程指南一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务