Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sentry-native SDK integration #2704

Merged
merged 32 commits into from
Oct 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4fe3227
native bridge from unity
bruno-garcia Sep 16, 2023
8b6fb29
bridge native
bruno-garcia Sep 16, 2023
545544f
mac bridge
bruno-garcia Sep 16, 2023
b964139
pack
bruno-garcia Sep 16, 2023
ba8f995
cocoa binding
bruno-garcia Sep 16, 2023
fbac943
console runs
bruno-garcia Sep 16, 2023
47cd5b1
crash cli natively
bruno-garcia Sep 16, 2023
dcee9d4
crash captured by sentry cocoa
bruno-garcia Sep 16, 2023
c28271a
Merge remote-tracking branch 'origin/feat/4.0.0' into feat/native-cra…
vaind Oct 6, 2023
d71c58a
trying to get this to compile
vaind Oct 6, 2023
abc3543
fix compilation
vaind Oct 6, 2023
e1e5927
chore: remove macos stuff
vaind Oct 6, 2023
56d181e
remove more macos stuff
vaind Oct 6, 2023
5c6a94d
windows net48 test issue
vaind Oct 8, 2023
5896483
feat: add sentry-native submodule & bindings project
vaind Oct 8, 2023
144f1c3
restore unintended formatting changs
vaind Oct 9, 2023
041deaa
chore: update solution filters
vaind Oct 9, 2023
e999663
update native bindings msbuild
vaind Oct 9, 2023
47f5758
native packaging
vaind Oct 9, 2023
6037759
trim trailing spaces
vaind Oct 9, 2023
4c515b3
wip: native lib static linking
vaind Oct 9, 2023
476e538
refactor: change DebugImage.ImageAddress to long
vaind Oct 10, 2023
4ff2d58
finish native debug image collection
vaind Oct 10, 2023
f509b42
native aot linux support
vaind Oct 10, 2023
42b8096
Merge branch 'feat/4.0.0' into feat/sentry-native-integration
vaind Oct 16, 2023
9607da4
remove unused native binding code
vaind Oct 16, 2023
29d02a4
fixup changelog
vaind Oct 16, 2023
146f2a0
chore: remove unused code
vaind Oct 16, 2023
5700783
chore: add sentry-native updater entry
vaind Oct 16, 2023
5922415
chore: update changelog
vaind Oct 16, 2023
17133c3
fixup: log an unexpected image
vaind Oct 16, 2023
eb30270
chore: remove unnecessary todo
vaind Oct 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/update-deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Update Dependencies
on:
# Run every day.
schedule:
- cron: '0 3 * * *'
- cron: "0 3 * * *"
# Allow a manual trigger to be able to run the update when there are new dependencies or after a PR merge to resolve CHANGELOG conflicts.
workflow_dispatch:

Expand All @@ -18,6 +18,8 @@ jobs:
path: modules/sentry-cocoa
- name: Java SDK
path: scripts/update-java.ps1
- name: Native SDK
path: modules/sentry-native
- name: CLI
path: scripts/update-cli.ps1
uses: getsentry/github-workflows/.github/workflows/updater.yml@v2
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@
[submodule "modules/perfview"]
path = modules/perfview
url = https://github.com/getsentry/perfview.git
[submodule "modules/sentry-native"]
path = modules/sentry-native
url = https://github.com/getsentry/sentry-native.git
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@ API Changes:
- Upgraded to NLog version 5. ([#2697](https://github.com/getsentry/sentry-dotnet/pull/2697))
- Removed unused `StackFrame.InstructionOffset`. ([#2691](https://github.com/getsentry/sentry-dotnet/pull/2691))
- Change `StackFrame`'s `ImageAddress`, `InstructionAddress` and `FunctionId` to `long?`. ([#2691](https://github.com/getsentry/sentry-dotnet/pull/2691))
- Enable `CaptureFailedRequests` by default. ([2688](https://github.com/getsentry/sentry-dotnet/pull/2688))
- Change `DebugImage.ImageAddress` to `long?`. ([#2725](https://github.com/getsentry/sentry-dotnet/pull/2725))
- Enable `CaptureFailedRequests` by default ([2688](https://github.com/getsentry/sentry-dotnet/pull/2688))
- Additional constructors removed from `TransactionTracer`. ([#2694](https://github.com/getsentry/sentry-dotnet/pull/2694))
- Removed the `Scope.Platform` property as it was never applied. ([#2695](https://github.com/getsentry/sentry-dotnet/pull/2695))
- Reordered parameters for ther TransactionContext and SpanContext constructors. If you're constructing instances of these classes, you will need to adjust the order in which you pass parameters to these. ([#2696](https://github.com/getsentry/sentry-dotnet/pull/2696))
- The `DiagnosticLogger` signature for `LogError` and `LogFatal` changed to take the `exception` as the first parameter. That way it does no longer get mixed up with the TArgs. The `DiagnosticLogger` now also received an overload for `LogError` and `LogFatal` that accepts a message only. ([#2715](https://github.com/getsentry/sentry-dotnet/pull/2715))
- Integrate `sentry-native` as a static library in Native AOT builds to enable symbolication. ([2704](https://github.com/getsentry/sentry-dotnet/pull/2704))

## Unreleased

Expand Down
9 changes: 5 additions & 4 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@
BeforeTargets="_ComputePublishLocation"
Condition="'$(OutputType)' == 'Exe' And ('$(TargetPlatformIdentifier)' == 'ios' Or '$(TargetPlatformIdentifier)' == 'maccatalyst')">
<ItemGroup>
<ResolvedFileToPublish
Update="@(ResolvedFileToPublish)"
Condition="'%(ResolvedFileToPublish.Extension)' == '.xml' And '%(ResolvedFileToPublish.PublishFolderType)' == ''"
PublishFolderType="None" />
<ResolvedFileToPublish
Update="@(ResolvedFileToPublish)"
Condition="'%(ResolvedFileToPublish.Extension)' == '.xml' And '%(ResolvedFileToPublish.PublishFolderType)' == ''"
PublishFolderType="None" />
</ItemGroup>
</Target>

Expand All @@ -92,5 +92,6 @@
<Import Project="$(MSBuildThisFileDirectory)src\Sentry\buildTransitive\Sentry.targets" />
<Import Project="$(MSBuildThisFileDirectory)src\Sentry.Bindings.Cocoa\buildTransitive\Sentry.Bindings.Cocoa.targets"
Condition="'$(OutputType)' == 'Exe' And ('$(TargetPlatformIdentifier)' == 'ios' Or '$(TargetPlatformIdentifier)' == 'maccatalyst')" />
<Import Project="$(MSBuildThisFileDirectory)src\Sentry.Bindings.Native\buildTransitive\Sentry.Bindings.Native.targets" />

</Project>
1 change: 1 addition & 0 deletions Sentry-CI-Build-Linux.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"src\\Sentry.AspNetCore\\Sentry.AspNetCore.csproj",
"src\\Sentry.Azure.Functions.Worker\\Sentry.Azure.Functions.Worker.csproj",
"src\\Sentry.Bindings.Android\\Sentry.Bindings.Android.csproj",
"src\\Sentry.Bindings.Native\\Sentry.Bindings.Native.csproj",
"src\\Sentry.DiagnosticSource\\Sentry.DiagnosticSource.csproj",
"src\\Sentry.EntityFramework\\Sentry.EntityFramework.csproj",
"src\\Sentry.Extensions.Logging\\Sentry.Extensions.Logging.csproj",
Expand Down
1 change: 1 addition & 0 deletions Sentry-CI-Build-Windows.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"src\\Sentry.AspNetCore\\Sentry.AspNetCore.csproj",
"src\\Sentry.Azure.Functions.Worker\\Sentry.Azure.Functions.Worker.csproj",
"src\\Sentry.Bindings.Android\\Sentry.Bindings.Android.csproj",
"src\\Sentry.Bindings.Native\\Sentry.Bindings.Native.csproj",
"src\\Sentry.DiagnosticSource\\Sentry.DiagnosticSource.csproj",
"src\\Sentry.EntityFramework\\Sentry.EntityFramework.csproj",
"src\\Sentry.Extensions.Logging\\Sentry.Extensions.Logging.csproj",
Expand Down
7 changes: 7 additions & 0 deletions Sentry.sln
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.Bindings.Android", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.Bindings.Cocoa", "src\Sentry.Bindings.Cocoa\Sentry.Bindings.Cocoa.csproj", "{33336B98-A69E-4F28-A71A-1D8753F3BA24}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.Bindings.Native", "src\Sentry.Bindings.Native\Sentry.Bindings.Native.csproj", "{BDBE4B77-DC2F-4EBE-AB5C-6507DDE7650C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.DiagnosticSource", "src\Sentry.DiagnosticSource\Sentry.DiagnosticSource.csproj", "{22E4E3F5-8D6E-433D-9456-F60DFB1EFC82}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.EntityFramework", "src\Sentry.EntityFramework\Sentry.EntityFramework.csproj", "{2AEC3A6E-886F-43DA-8EA6-82EBF916E89A}"
Expand Down Expand Up @@ -462,6 +464,10 @@ Global
{8032310D-3C06-442C-A318-F365BCC4C804}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8032310D-3C06-442C-A318-F365BCC4C804}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8032310D-3C06-442C-A318-F365BCC4C804}.Release|Any CPU.Build.0 = Release|Any CPU
{BDBE4B77-DC2F-4EBE-AB5C-6507DDE7650C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDBE4B77-DC2F-4EBE-AB5C-6507DDE7650C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDBE4B77-DC2F-4EBE-AB5C-6507DDE7650C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BDBE4B77-DC2F-4EBE-AB5C-6507DDE7650C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8328B70C-B808-4ED1-BB16-8555B2752CB6} = {7D4D7A6A-3F5C-4B4C-A198-AC51F9220231}
Expand Down Expand Up @@ -538,5 +544,6 @@ Global
{162A1CAE-ACEE-45CA-A6D0-7702ADE4D3DE} = {6987A1CC-608E-4868-A02C-09D30C8B7B2D}
{67269916-C417-4CEE-BD7D-CA66C3830AEE} = {A3CCA27E-4DF8-479D-833C-CAA0950715AA}
{8032310D-3C06-442C-A318-F365BCC4C804} = {A3CCA27E-4DF8-479D-833C-CAA0950715AA}
{BDBE4B77-DC2F-4EBE-AB5C-6507DDE7650C} = {230B9384-90FD-4551-A5DE-1A5C197F25B6}
EndGlobalSection
EndGlobal
1 change: 1 addition & 0 deletions modules/sentry-native
Submodule sentry-native added at 79899a
4 changes: 3 additions & 1 deletion scripts/generate-solution-filters-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ filterConfigs:
- "**/*Maui.Device.TestApp.csproj"
- "**/*SourceGen.csproj"
- "**/Sentry.Samples.Android.csproj"
- "**/Sentry.Bindings.Native.csproj"

- outputPath: Sentry-CI-Build-Windows.slnf
include:
Expand Down Expand Up @@ -132,7 +133,8 @@ filterConfigs:
- "samples/**/*Maui.csproj"
- "src/**/Sentry.csproj"
- "src/**/*Android*.csproj"
- "src/**/*Bindings*.csproj"
- "src/**/*Bindings.Android.csproj"
- "src/**/*Bindings.Cocoa.csproj"
- "src/**/Sentry.Extensions.Logging.csproj"
- "src/**/Sentry.Maui.csproj"
- "test/**/Sentry.Android.AssemblyReader.Tests.csproj"
Expand Down
1 change: 1 addition & 0 deletions src/Sentry.Bindings.Native/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
runtimes
4 changes: 4 additions & 0 deletions src/Sentry.Bindings.Native/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
This package supports the Sentry SDK for .NET. It is not intended to be referenced directly.
Instead, reference the main package:

- [`Sentry`](https://www.nuget.org/packages/Sentry)
125 changes: 125 additions & 0 deletions src/Sentry.Bindings.Native/Sentry.Bindings.Native.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Description>.NET Bindings for the Sentry Native SDK</Description>
<TargetFramework>net7.0</TargetFramework>
<SentryNativeSourceDirectory>..\..\modules\sentry-native\</SentryNativeSourceDirectory>
<SentryNativeLibraryName>sentry-native</SentryNativeLibraryName>
<SentryNativeOutputDirectory>$(MSBuildThisFileDirectory)runtimes\</SentryNativeOutputDirectory>
<!-- List of runtime identifiers: https://github.com/dotnet/runtime/blob/main/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json -->
<NativeLibRelativePath-win-x64>win-x64\native\</NativeLibRelativePath-win-x64>
<SentryNativeOutputDirectory-win-x64>$(SentryNativeOutputDirectory)$(NativeLibRelativePath-win-x64)</SentryNativeOutputDirectory-win-x64>
<NativeLibRelativePath-linux-x64>linux-x64\native\</NativeLibRelativePath-linux-x64>
<SentryNativeOutputDirectory-linux-x64>$(SentryNativeOutputDirectory)$(NativeLibRelativePath-linux-x64)</SentryNativeOutputDirectory-linux-x64>
</PropertyGroup>

<!-- Packaging -->
<ItemGroup>
<!-- Use a separate readme file in the nuget. -->
<None Remove="$(MSBuildThisFileDirectory)..\..\README.md" />
<None Include="$(MSBuildThisFileDirectory)README.md"
Pack="true"
PackagePath="" />

<!-- Don't add the changelog to the nuget. -->
<PackageReference Remove="SIL.ReleaseTasks" />

<!-- Include our transitive build targets in the nuget. -->
<None Include="buildTransitive\Sentry.Bindings.Native.targets">
<Pack>true</Pack>
<PackagePath>buildTransitive\</PackagePath>
</None>
</ItemGroup>

<!-- Packaging the native library -->
<ItemGroup Condition="'$(CI_PUBLISHING_BUILD)' == 'true' or $([MSBuild]::IsOsPlatform('Windows'))">
<NativeLibs Include="$(SentryNativeOutputDirectory-win-x64)$(SentryNativeLibraryName).lib" />
<NativeLibs Include="$(SentryNativeOutputDirectory-win-x64)$(SentryNativeLibraryName).pdb" />
<None Include="@(NativeLibs)">
<Pack>true</Pack>
<PackagePath>\runtimes\$(NativeLibRelativePath-win-x64)</PackagePath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

<ItemGroup Condition="'$(CI_PUBLISHING_BUILD)' == 'true' or $([MSBuild]::IsOsPlatform('Linux'))">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I imagine this CI_PUBLISHING_BUILD stuff is on the other binding projects and got copied here. But why do we need this? I'm concerned about stuff behaving differently in CI vs locally

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's intentional here though not yet necessary, I've extracted that as a "next step" in the PR description:

collect both platforms for the nuget package when running in CI

As to why: because we can't build all platforms on a single machine and I don't really want to do the download from a CI job the way I had to do in sentry-unity because that is very painful whenever there's a change, e.g. you want to run different sentry-native version on your branch than what has been compiled as an artifact on the main branch.

The way this project is currently implemented is that it compiles for your platform locally and only if necessary (i.e. sentry-native submodule checkout has changed or if there's a change in this Sentry.Bindings.Native.csproj file). In CI, it will collect and package for all platforms. At least that's the idea.

<None Include="$(SentryNativeOutputDirectory-linux-x64)lib$(SentryNativeLibraryName).a">
<Pack>true</Pack>
<PackagePath>\runtimes\$(NativeLibRelativePath-linux-x64)</PackagePath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

<Target Name="CleanNativeSDK" BeforeTargets="CoreClean">
<Message Text="Inside Custom Clean" Importance="high"/>
<RemoveDir Directories="$(SentryNativeOutputDirectory)" />
<RemoveDir Directories="$(SentryNativeSourceDirectory)build" />
</Target>

<!-- Build the Sentry Native SDK -->
<Target Name="_BuildSentryNativeSDK-win-x64"
BeforeTargets="DispatchToInnerBuilds;BeforeBuild"
Condition="$([MSBuild]::IsOsPlatform('Windows'))"
Inputs="..\..\.git\modules\modules\sentry-native\HEAD;$(MSBuildThisFileDirectory)Sentry.Bindings.Native.csproj"
Outputs="$(SentryNativeOutputDirectory-win-x64)$(SentryNativeLibraryName).lib;$(SentryNativeOutputDirectory-win-x64)$(SentryNativeLibraryName).pdb">
<MSBuild Projects="$(MSBuildProjectFile)"
Targets="_InnerBuildSentryNativeSDK-win-x64"
Properties="TargetFramework=once" />
</Target>

<Target Name="_InnerBuildSentryNativeSDK-win-x64">
<Message Importance="High"
Text="Building artifacts of Sentry Native SDK for win-x64." />

<Exec WorkingDirectory="$(SentryNativeSourceDirectory)"
Command="cmake -B build -S . ^
-D SENTRY_SDK_NAME=sentry.native.dotnet ^
-D SENTRY_BUILD_SHARED_LIBS=0 ^
-D SENTRY_BUILD_RUNTIMESTATIC=1 ^
-D SENTRY_BACKEND=none ^
-D SENTRY_TRANSPORT=none " />
<Exec WorkingDirectory="$(SentryNativeSourceDirectory)"
Command="cmake --build build --target sentry --config RelWithDebInfo --parallel" />

<ItemGroup>
<NativeSdkArtifacts Include="$(SentryNativeSourceDirectory)build/RelWithDebInfo/sentry.lib" />
<NativeSdkArtifacts Include="$(SentryNativeSourceDirectory)build/RelWithDebInfo/sentry.pdb" />
</ItemGroup>

<Copy SourceFiles="@(NativeSdkArtifacts)"
DestinationFiles="@(NativeSdkArtifacts->'$(SentryNativeOutputDirectory-win-x64)%(Filename)-native%(Extension)')" />

<!-- Explicitly update timestamp on output files so that this target doesn't run again even if the CMake build reused previously built artifacts. -->
<Touch Files="@(NativeSdkArtifacts)" />
</Target>

<Target Name="_BuildSentryNativeSDK-linux-x64"
BeforeTargets="DispatchToInnerBuilds;BeforeBuild"
Condition="$([MSBuild]::IsOsPlatform('Linux'))"
Inputs="..\..\.git\modules\modules\sentry-native\HEAD;$(MSBuildThisFileDirectory)Sentry.Bindings.Native.csproj"
Outputs="$(SentryNativeOutputDirectory-linux-x64)lib$(SentryNativeLibraryName).a">
<MSBuild Projects="$(MSBuildProjectFile)"
Targets="_InnerBuildSentryNativeSDK-linux-x64"
Properties="TargetFramework=once" />
</Target>

<Target Name="_InnerBuildSentryNativeSDK-linux-x64">
<Message Importance="High"
Text="Building artifacts of Sentry Native SDK for linux-x64." />

<Exec WorkingDirectory="$(SentryNativeSourceDirectory)"
Command="cmake -B build -S . \
-D CMAKE_BUILD_TYPE=RelWithDebInfo \
-D SENTRY_SDK_NAME=sentry.native.dotnet \
-D SENTRY_BUILD_SHARED_LIBS=0 \
-D SENTRY_BACKEND=none \
-D SENTRY_TRANSPORT=none " />
<Exec WorkingDirectory="$(SentryNativeSourceDirectory)" Command="cmake --build build --target sentry --parallel" />

<ItemGroup>
<NativeSdkArtifacts Include="$(SentryNativeSourceDirectory)build/libsentry.a" />
</ItemGroup>
<Copy SourceFiles="@(NativeSdkArtifacts)"
DestinationFiles="@(NativeSdkArtifacts->'$(SentryNativeOutputDirectory-linux-x64)%(Filename)-native%(Extension)')" />
</Target>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<Project>
<ItemGroup Condition="'$(OutputType)' == 'Exe' And '$(RuntimeIdentifier)' == 'win-x64'">
<!-- Generate direct PInvokes for Dependency -->
<DirectPInvoke Include="sentry-native" />

<!-- Link statically -->
<NativeLibrary Include="$(MSBuildThisFileDirectory)..\runtimes\win-x64\native\sentry-native.lib" />
<NativeLibrary Include="dbghelp.lib" />

<!-- Copy debug symbols to the app output directory so that it can get uploaded by Sentry CLI. -->
<Content Include="$(MSBuildThisFileDirectory)..\runtimes\win-x64\native\sentry-native.pdb">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>%(FileName)%(Extension)</Link>
</Content>
</ItemGroup>

<ItemGroup Condition="'$(OutputType)' == 'Exe' And '$(RuntimeIdentifier)' == 'linux-x64'">
<!-- Generate direct PInvokes for Dependency -->
<DirectPInvoke Include="sentry-native" />

<!-- Link statically -->
<NativeLibrary Include="$(MSBuildThisFileDirectory)..\runtimes\linux-x64\native\libsentry-native.a" />
</ItemGroup>
</Project>
18 changes: 9 additions & 9 deletions src/Sentry/CrashType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ namespace Sentry;
[Obsolete("WARNING: This method deliberately causes a crash, and should not be used in a real application.")]
public enum CrashType
{
/// <summary>
/// A managed <see cref="ApplicationException"/> will be thrown from .NET.
/// </summary>
Managed,
/// <summary>
/// A managed <see cref="ApplicationException"/> will be thrown from .NET.
/// </summary>
Managed,

/// <summary>
/// A managed <see cref="ApplicationException"/> will be thrown from .NET on a background thread.
/// </summary>
ManagedBackgroundThread,
/// <summary>
/// A managed <see cref="ApplicationException"/> will be thrown from .NET on a background thread.
/// </summary>
ManagedBackgroundThread,

#if ANDROID
/// <summary>
Expand All @@ -31,7 +31,7 @@ public enum CrashType

#if __MOBILE__
/// <summary>
/// A native operation that will crash the appliction will be performed by a C library.
/// A native operation that will crash the application will be performed by a C library.
/// </summary>
Native
#endif
Expand Down
Loading
Loading