这篇文章主要介绍了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# 代码调试技巧和如何远程调试
- .NET CORE DI 依赖注入 2023-09-27
- c# 模拟线性回归的示例 2023-03-14
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- Unity Shader实现模糊效果 2023-04-27
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Oracle中for循环的使用方法 2023-07-04
- 如何使用C# 捕获进程输出 2023-03-10
- user32.dll 函数说明小结 2022-12-26
- Unity3D实现渐变颜色效果 2023-01-16