.Net Core调试Liunx

场景:

  之前做.net core 项目,只能本机调试测试完,发布后放在 liunx 上。但这个时候经常会因为环境问题,配置问题等,导致程序出现莫名其妙的 bug,有的日志还记录的不完善,很难找到问题。

解决方法:

  主要还是看官方文档,之前尝试过 liunx 调试,但是没成功。这次看到微软更新了版本,甚至可以利用 WSL,直接在 windows 下进行 liunx 环境调试。这 wsl 我还不是很理解,目前我理解为就是 liunx 的虚拟机,或者环境。

  准备调试:我的是 vs 2019,需要修改发布时的配置,把断点信息放进去,就像 gcc 的 -g,然后就可以用 gdb 调试一样。这点很重要

  工具 -> 选项 -> 调试 -> 启用“仅我的代码”:不禁用的话,默认生成时会把 debug 的信息忽略掉。

 

   然后记得把模式改成 Debug 模式:(右键项目 -> 属性 -> 生成)

 

   然后就可以发布了,发布成文件夹,主要要看看文件夹下是不是包含 dll 文件和.pdb 文件,这个 pdb 文件主要是调试所用的信息文件。

  发布完,去用 dotnet xxxx.dll 启动程序

  ssh 连接远程服务器:调试 -> 附加到进程,选择连接目标,连接成功后,可以看到进程信息,选择刚刚调试的进程,“附加”-> 托管,就可以了。

 

   看一下结果:这个情况就是在连接,并启用调试适配器(估计也是 liunx 上的一个调试器对 liunx 的.net 进行调试,然后用 ssh 进行信号的传输,vs 的继续执行,下一步等操作被解析成指令,传过去,再把结果传回来)

 

   断点命中:

 

   其实是之前在 vscode 调试 liunx 上的 c++ 时,我发现 c++ 调试贼丝滑,.net 不应该这么拉才对,于是回来又研究了一下。果然是之前对调试,编译,连接,预处理等的理解不够。

参考:

  https://docs.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging-dotnet-core-linux-with-ssh?view=vs-2022

  https://m.php.cn/article/456769.html