.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