中山营销网站建设费用,徐州自助建站系统,wordpress分类图标,网站备案人有什么风险上周和大家分享了.NET 5开源工作流框架elsa#xff0c;程序跑起来后#xff0c;想看一下后台线程的执行情况。抓了个进程Dump后#xff0c;使用WinDbg调试#xff0c;加载SOS调试器扩展#xff0c;结果无法正常使用了#xff1a;0:000 .loadby sos clrUnable to find… 上周和大家分享了.NET 5开源工作流框架elsa程序跑起来后想看一下后台线程的执行情况。抓了个进程Dump后使用WinDbg调试加载SOS调试器扩展结果无法正常使用了0:000 .loadby sos clrUnable to find module clr这引起了个人的兴趣必须要重新掌握.NET 5 / .NET Core 下WinDbg调试技能。那么我们就开始吧一、先安装WinDbg推荐的下载链接老版本的WinDbghttps://raw.githubusercontent.com/EasyDarwin/Tools/master/Windbg_x86_x64/dbg_amd64.msi如果各位想尝鲜也可以从Windows Store下载 WingDbg Preview版本 下载后一步一步安装即可。 启动后的界面 二、安装最新版本的dotnet-sos 使用SOS调试器扩展可以使用本地调试器WinDbg、lldb调试.NET Core 程序。 推荐大家详细学习参考这篇文档dotnet-sos install 关于SOS调试器扩展推荐大家看这篇链接SOS调试器扩展 我们使用dotnet global tool 下载安装最新的dotnet-sos Nuget包 dotnet tool install --global dotnet-sos 安装成功后我们需要继续安装dotnet-sos dotnet-sos install [--architecture arch] 架构有以下选项ArmArm64X86X64 安装完成后有这么一条提示 Execute .load C:\Users\zhougq\.dotnet\sos\sos.dll to load SOS in your Windows debugger. 总结以下WinDbg or cdb by running .load %USERPROFILE%\.dotnet\sos\sos.dll in the debugger. 原先我们使用.load by sos在.NET Core 或者 .NET 5中需要直接按指定目录加载SOS调试器扩展了。三、新建.NET 5应用运行起来抓Dump 调试环境ready后我们启动.NET 5 WinDbg调试了 首先我们找个.NET 5 Console应用大家可以自己新建一个这里我使用了上次研究elsa的测试工程了 测试代码 1 using Microsoft.Extensions.DependencyInjection;2 using Microsoft.Extensions.Hosting;3 using Microsoft.Extensions.Logging;4 using System;5 using System.Threading.Tasks;6 using Elsa.Activities.Console.Activities;7 using Elsa.Activities.Console.Extensions;8 using Elsa.Activities.Timers.Extensions;9 using Elsa.Expressions;
10 using Elsa.Extensions;
11 using Elsa.Services;
12 using NodaTime;
13
14 namespace ElsaRecurringTaskWorkflow
15 {
16 using Elsa.Activities.Console.Extensions;
17
18 class Program
19 {
20 static async Task Main(string[] args)
21 {
22 var host new HostBuilder()
23 .ConfigureServices(ConfigureServices)
24 .ConfigureLogging(logging logging.AddConsole())
25 .UseConsoleLifetime()
26 .Build();
27
28 using (host)
29 {
30 await host.StartAsync();
31 await host.WaitForShutdownAsync();
32 }
33 }
34
35 private static void ConfigureServices(IServiceCollection services)
36 {
37 services
38 .AddElsaCore()
39 .AddConsoleActivities()
40 .AddTimerActivities(options options.Configure(x x.SweepInterval Duration.FromSeconds(1)))
41 .AddWorkflowRecurringTaskWorkflow();
42 }
43 }
44 } Run 跑起来 在Windows 任务管理器中抓个Dump 四、使用WinDbg调试.NET 5 应用 在上一步中我们抓了一个Dump文件C:\Users\zhougq\AppData\Local\Temp\ElsaRecurringTaskWorkflow.DMP 我们打开Windbg 然后打开我们刚才抓的Dump文件Open Dump File 首次打开会比较慢WinDbg会尝试下载所需要的pdb调试符号稍等一会即可。 下载复制完成后我们就可以开始调试了首先加载SOS扩展.load C:\Users\zhougq\.dotnet\sos\sos.dll 接下来大家可以根据需要去不同的调试指令了例如!runaway !threadpool !syncblk等详细的WinDbg调试交差大家可以参考https://www.cnblogs.com/tianqing/p/11307049.html[置顶] Windbg程序调试系列-索引篇 以上是使用WinDbg调试.NET 5的技术分享下一篇将给大家继续分享Linux抓Dump分享的技能。推荐几个不错的链接 dotnet-sos install SOS调试器扩展