本文介绍应用程序中的 Blazor WebAssembly 浏览器开发人员工具诊断工具。
先决条件
dotnet workload install wasm-tools
浏览器开发人员工具
可以在浏览器的开发人员工具控制台中使用诊断探查器手动分析应用代码。
内置诊断功能可用于跟踪:
- 预先 (AOT) 编译
- 调用规范(“callspec”,函数调用的顺序与时序)与检测
下表中的 MSBuild 属性启用探查器集成。
| 资产 | 违约 | 将值设置为... | DESCRIPTION |
|---|---|---|---|
<WasmProfilers> |
无值 | browser |
可使用的 Mono 探查器。 潜在值为“browser”和“log”。 若要同时使用两个值,请用分号将它们分隔开。 browser 探查器支持与浏览器开发人员工具性能探查器的集成。 |
<WasmNativeStrip> |
true |
false |
启用剥离本地可执行文件。 |
<WasmNativeDebugSymbols> |
true |
true |
启用生成本地调试符号。 |
Timing-Allow-Origin设置 HTTP 标头可实现更精确的时间度量。
启用探查器会对应用程序的大小和性能产生负面影响,因此不要在生产环境中发布启用探查器的应用程序。 在以下示例中,条件是在一个属性组节上设置的,仅当应用使用 /p:BlazorSampleProfilingEnabled=true(.NET CLI) 或在 Visual Studio 发布配置文件中使用 <BlazorSampleProfilingEnabled>true</BlazorSampleProfilingEnabled> 生成时才启用分析,其中“BlazorSampleProfilingEnabled”是所选择的自定义符号名称,并且与其他符号名称不冲突。
在应用的项目文件中(.csproj):
<PropertyGroup Condition="'$(BlazorSampleProfilingEnabled)' == 'true'">
<WasmProfilers>browser;</WasmProfilers>
<WasmNativeStrip>false</WasmNativeStrip>
<WasmNativeDebugSymbols>true</WasmNativeDebugSymbols>
<!-- disable debugger -->
<WasmDebugLevel>0</WasmDebugLevel>
</PropertyGroup>
或者,使用 .NET CLI 生成应用时启用功能。 传递给 dotnet build 命令的以下选项镜像前面的 MSBuild 属性配置:
/p:WasmProfilers=browser /p:WasmNativeStrip=false /p:WasmNativeDebugSymbols=true
使用 <WasmProfilers> 设置 WebAssembly 探查器不需要提前编译(AOT)。
浏览器开发人员工具分析器可以在设置 AOT(<RunAOTCompilation>/<RunAOTCompilationAfterBuild> 设置为 true)的情况下使用,也可以在不使用 WebAssembly 分析器(<WasmProfilers> 已删除)的情况下使用。
若要查看开发人员工具控制台中的 AOT 方法名称,请安装 DWARF chrome 扩展。
设置示例间隔
在应用的项目文件中配置示例间隔。 在以下示例中, {INTERVAL} 占位符表示以毫秒为单位的时间。 如果未指定默认设置 sampleIntervalMs 为 10 毫秒。
<PropertyGroup>
<WasmProfilers>browser:interval={INTERVAL};</WasmProfilers>
</PropertyGroup>
调用规范(callspec)
如果要筛选已分析的方法,请使用调用规范(callspec)。
将 callspec 与筛选器添加到 <WasmProfilers> 元素中的 browser WebAssembly 探查器:
<WasmProfilers>browser:callspec={FILTER};</WasmProfilers>
下表显示了可允许的 {FILTER} 占位符值。
| 过滤器 | DESCRIPTION |
|---|---|
all |
所有程序集 |
program |
入口点程序集 |
{ASSEMBLY} |
指定程序集({ASSEMBLY}) |
M:Type:{METHOD} |
指定方法 ({METHOD}) |
N:{NAMESPACE} |
指定命名空间 ({NAMESPACE}) |
T:{TYPE} |
指定类型 ({TYPE}) |
+EXPR |
包括表达式 |
-EXPR |
排除表达式 |
在以下示例中,分析的方法筛选为应用的命名空间 SampleApp ,采样间隔为 50 毫秒。
<WasmProfilers>browser:callspec=N:SampleApp,interval=50</WasmProfilers>