c# 代码调试技巧和如何远程调试

这篇文章主要介绍了c# 代码调试技巧和如何远程调试,帮助大家更好的理解和使用c#编程语言,感兴趣的朋友可以了解下

一:背景

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), 如下图:


    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# 代码调试技巧和如何远程调试的详细内容,更多关于c# 代码调试的资料请关注得得之家其它相关文章!

本文标题为:c# 代码调试技巧和如何远程调试