Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 13 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ Key targets defined in `Directory.Build.targets`:
| `BuildAndroidSDK` | Builds Android SDK via Gradle |
| `BuildLinuxSDK` | Builds Linux SDK via CMake |
| `BuildWindowsSDK` | Builds Windows SDK via CMake (Crashpad) |
| `BuildCocoaSDK` | Downloads iOS/macOS SDKs from releases |
| `BuildCocoaSDK` | Builds iOS/macOS SDKs via Xcode |
| `UnityEditModeTest` | Runs edit-mode unit tests |
| `UnityPlayModeTest` | Runs play-mode tests |

Expand Down Expand Up @@ -320,6 +320,18 @@ modules/
└── sentry-cocoa/ # iOS/macOS (prebuilt XCFramework)
```

### Local Android NDK Development

When iterating on `modules/sentry-native/ndk` together with `modules/sentry-java`, publish the local NDK build to `~/.m2` so sentry-java picks it up instead of mavenCentral:

```bash
pwsh scripts/build-native-ndk-local.ps1 # publish only
pwsh scripts/build-native-ndk-local.ps1 -BuildJava # publish + rebuild :sentry-android-ndk
pwsh scripts/build-native-ndk-local.ps1 -PurgeCache -BuildJava # first switch from central, or after stale builds
```

Prerequisite: `mavenLocal()` must precede `mavenCentral()` in `modules/sentry-java/settings.gradle.kts` (`dependencyResolutionManagement` block). The script aborts otherwise.

### Key Source Files

**Android (`src/Sentry.Unity.Android/`):**
Expand Down
105 changes: 87 additions & 18 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -117,33 +117,57 @@
<Exec Command="pwsh &quot;$(RepoRoot)scripts/download-sentry-cli.ps1&quot;"></Exec>
</Target>

<!-- Build the Cocoa SDK: dotnet msbuild /t:BuildCocoaSDK src/Sentry.Unity -->
<!-- Builds the sentry-cocoa submodule from source and extracts iOS and macOS artifacts -->
<!--
Build the Cocoa SDK:
dotnet msbuild /t:BuildCocoaSDK src/Sentry.Unity
Force a clean rebuild (bypass the "xcframework already built" short-circuit and
wipe the sentry-cocoa XCFrameworkBuildPath/ cache before building):
dotnet msbuild /t:BuildCocoaSDK src/Sentry.Unity -p:RebuildCocoaSdk=true
Builds the sentry-cocoa submodule from source and replaces the iOS xcframework
and macOS dylib in package-dev/Plugins/.
-->
<Target Name="BuildCocoaSDK"
Condition="!$([MSBuild]::IsOSPlatform('Windows')) AND '$(MSBuildProjectName)' == 'Sentry.Unity'
And (!Exists('$(SentryiOSArtifactsDestination)') Or !Exists('$(SentrymacOSArtifactsDestination)Sentry.dylib'))"
And ('$(RebuildCocoaSdk)' == 'true' Or !Exists('$(SentryiOSArtifactsDestination)') Or !Exists('$(SentrymacOSArtifactsDestination)Sentry.dylib'))"
BeforeTargets="BeforeBuild">

<Error Condition="!Exists('$(SentryCocoaRoot)Sentry.xcodeproj')" Text="sentry-cocoa submodule not checked out at $(SentryCocoaRoot). Run: git submodule update --init modules/sentry-cocoa" />

<Message Importance="High" Text="Building Cocoa SDK from submodule." />

<Exec Command="pwsh &quot;$(RepoRoot)scripts/build-cocoa-sdk.ps1&quot; -CocoaRoot &quot;$(SentryCocoaRoot)&quot; -iOSDestination &quot;$(SentryiOSArtifactsDestination)&quot; -macOSDestination &quot;$(SentrymacOSArtifactsDestination)Sentry.dylib&quot;" />
<PropertyGroup>
<BuildCocoaSdkScriptArgs Condition="'$(RebuildCocoaSdk)' == 'true'">-Clean</BuildCocoaSdkScriptArgs>
</PropertyGroup>

<Exec Command="pwsh &quot;$(RepoRoot)scripts/build-cocoa-sdk.ps1&quot; -CocoaRoot &quot;$(SentryCocoaRoot)&quot; -iOSDestination &quot;$(SentryiOSArtifactsDestination)&quot; -macOSDestination &quot;$(SentrymacOSArtifactsDestination)Sentry.dylib&quot; $(BuildCocoaSdkScriptArgs)" />

<Error Condition="(!Exists('$(SentryiOSArtifactsDestination)'))" Text="Failed to set up the iOS SDK." />
<Error Condition="(!Exists('$(SentrymacOSArtifactsDestination)Sentry.dylib') Or !Exists('$(SentrymacOSArtifactsDestination)Sentry.dylib.dSYM'))" Text="Failed to set up the macOS SDK." />
</Target>

<!-- Build the Android SDK: dotnet msbuild /t:BuildAndroidSDK src/Sentry.Unity -->
<!--
Build the Android SDK:
dotnet msbuild /t:BuildAndroidSDK src/Sentry.Unity
Force a clean rebuild (bypass the "Sentry~/ already has 4 files" short-circuit).
Also republishes sentry-native-ndk to mavenLocal so sentry-java consumes the
locally-built NDK instead of the mavenCentral release:
dotnet msbuild /t:BuildAndroidSDK src/Sentry.Unity -p:RebuildAndroidSdk=true
-->
<Target Name="BuildAndroidSDK"
DependsOnTargets="DownloadCLI"
Condition="'$(MSBuildProjectName)' == 'Sentry.Unity' And (!Exists('$(SentryAndroidArtifactsDestination)') Or (Exists('$(SentryAndroidArtifactsDestination)') And $([System.IO.Directory]::GetFiles('$(SentryAndroidArtifactsDestination)').Length) != 4))"
Condition="'$(MSBuildProjectName)' == 'Sentry.Unity' And ('$(RebuildAndroidSdk)' == 'true' Or !Exists('$(SentryAndroidArtifactsDestination)') Or (Exists('$(SentryAndroidArtifactsDestination)') And $([System.IO.Directory]::GetFiles('$(SentryAndroidArtifactsDestination)').Length) != 4))"
BeforeTargets="BeforeBuild">
<Error Condition="!Exists('$(SentryAndroidRoot)')" Text="Couldn't find the Android root at $(SentryAndroidRoot)." />

<!-- Clean incomplete artifacts directory before building -->
<RemoveDir Directories="$(SentryAndroidArtifactsDestination)" Condition="Exists('$(SentryAndroidArtifactsDestination)')" ContinueOnError="true" />

<!-- When forcing a rebuild, also publish a fresh sentry-native-ndk to mavenLocal so
sentry-java's :sentry-android-ndk resolves it locally. The same local AAR is also
copied over the bundled sentry-native-ndk-release.aar below, keeping the Java/Kotlin
and native sides in sync. -->
<CallTarget Condition="'$(RebuildAndroidSdk)' == 'true'" Targets="PublishNativeNdkLocal" />

<Message Importance="High" Text="Building Sentry Android SDK." />

<!-- IgnoreExitCode: Gradle may report BUILD SUCCESSFUL yet the JVM exits with code -1 due to
Expand All @@ -169,41 +193,81 @@

<Copy SourceFiles="@(AndroidJarArtifacts)" DestinationFiles="$(SentryAndroidArtifactsDestination)sentry.jar" />

<Message Importance="High" Text="Reading the sentry-native-ndk version from the 'libs.versions.toml' file." />

<PropertyGroup>
<SentryNativeNdkLocalAar>$(SentryNativeRoot)ndk/lib/build/outputs/aar/sentry-native-ndk-release.aar</SentryNativeNdkLocalAar>
</PropertyGroup>

<!-- Prefer the locally-built sentry-native-ndk AAR when present
(see scripts/build-native-ndk-local.ps1). Falls back to the
released artifact below when no local build exists. -->
<Message Condition="Exists('$(SentryNativeNdkLocalAar)')" Importance="High" Text="Using locally-built sentry-native-ndk AAR from '$(SentryNativeNdkLocalAar)'." />
<Copy Condition="Exists('$(SentryNativeNdkLocalAar)')" SourceFiles="$(SentryNativeNdkLocalAar)" DestinationFiles="$(SentryAndroidArtifactsDestination)sentry-native-ndk-release.aar" />

<Message Condition="!Exists('$(SentryNativeNdkLocalAar)')" Importance="High" Text="Reading the sentry-native-ndk version from the 'libs.versions.toml' file." />

<PropertyGroup Condition="!Exists('$(SentryNativeNdkLocalAar)')">
<PropertiesContent>$([System.IO.File]::ReadAllText("$(RepoRoot)modules/sentry-java/gradle/libs.versions.toml"))</PropertiesContent>
<NativeVersion>$([System.Text.RegularExpressions.Regex]::Match($(PropertiesContent), 'sentry-native-ndk\s*=\s*\{[^}]*version\s*=\s*"([^"]+)"').Groups[1].Value)</NativeVersion>
</PropertyGroup>

<!-- Clean cache if version does not exist to get rid of old versions -->
<RemoveDir
Condition="!Exists('$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion).zip')"
Condition="!Exists('$(SentryNativeNdkLocalAar)') And !Exists('$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion).zip')"
Directories="$(SentryNativeNdkCache)" />

<!-- Create cache directory -->
<MakeDir Condition="!Exists('$(SentryNativeNdkCache)')" Directories="$(SentryNativeNdkCache)" />
<MakeDir Condition="!Exists('$(SentryNativeNdkLocalAar)') And !Exists('$(SentryNativeNdkCache)')" Directories="$(SentryNativeNdkCache)" />

<Message Importance="High" Text="Downloading sentry-native-ndk version '$(NativeVersion)'." />
<Message Condition="!Exists('$(SentryNativeNdkLocalAar)')" Importance="High" Text="Downloading sentry-native-ndk version '$(NativeVersion)'." />

<!-- Download prebuilt sentry-native-ndk -->
<Exec
Condition="!Exists('$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion).zip')"
Condition="!Exists('$(SentryNativeNdkLocalAar)') And !Exists('$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion).zip')"
Command="curl -L https://github.com/getsentry/sentry-native/releases/download/$(NativeVersion)/sentry-native-ndk-$(NativeVersion).zip -o &quot;$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion).zip&quot;" />

<Exec
Condition="!Exists('$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion)')"
Condition="!Exists('$(SentryNativeNdkLocalAar)') And !Exists('$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion)')"
Command="pwsh -Command &quot;Expand-Archive -Path '$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion).zip' -DestinationPath '$(SentryNativeNdkCache)' -Force&quot;" />

<Copy SourceFiles="$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion)/sentry-native-ndk-release.aar" DestinationFiles="$(SentryAndroidArtifactsDestination)sentry-native-ndk-release.aar" />
<Copy Condition="!Exists('$(SentryNativeNdkLocalAar)')" SourceFiles="$(SentryNativeNdkCache)sentry-native-ndk-$(NativeVersion)/sentry-native-ndk-release.aar" DestinationFiles="$(SentryAndroidArtifactsDestination)sentry-native-ndk-release.aar" />

<Error Condition="!Exists('$(SentryAndroidArtifactsDestination)')" Text="Failed to build the Android SDK." />
</Target>

<!-- Build the Sentry Native SDK for Windows: dotnet msbuild /t:BuildWindowsSDK src/Sentry.Unity -->
<!--
Build sentry-native-ndk and publish it to the local Maven repo (~/.m2)
so sentry-java's :sentry-android-ndk build consumes the local artifact
instead of mavenCentral. Requires mavenLocal() to be listed before
mavenCentral() in modules/sentry-java/settings.gradle.kts (the script
verifies this and aborts otherwise).

dotnet msbuild /t:PublishNativeNdkLocal src/Sentry.Unity

Purge stale Gradle caches before publishing (use the first time you
switch from mavenCentral or when the consumed artifact looks stale):
dotnet msbuild /t:PublishNativeNdkLocal src/Sentry.Unity -p:PurgeNdkCache=true
-->
<Target Name="PublishNativeNdkLocal" Condition="'$(MSBuildProjectName)' == 'Sentry.Unity'">
<Error Condition="!Exists('$(SentryNativeRoot)ndk')" Text="Couldn't find sentry-native NDK module at $(SentryNativeRoot)ndk. Run: git submodule update --init modules/sentry-native" />

<PropertyGroup>
<PublishNativeNdkScriptArgs Condition="'$(PurgeNdkCache)' == 'true'">-PurgeCache</PublishNativeNdkScriptArgs>
</PropertyGroup>

<Message Importance="High" Text="Publishing sentry-native-ndk to mavenLocal." />

<Exec Command="pwsh &quot;$(RepoRoot)scripts/build-native-ndk-local.ps1&quot; $(PublishNativeNdkScriptArgs)" />
</Target>

<!--
Build the Sentry Native SDK for Windows:
dotnet msbuild /t:BuildWindowsSDK src/Sentry.Unity
Force a clean rebuild (bypass the "sentry.dll already exists" short-circuit):
dotnet msbuild /t:BuildWindowsSDK src/Sentry.Unity -p:RebuildNativeSdk=true
-->
<Target Name="BuildWindowsSDK" Condition="'$(MSBuildProjectName)' == 'Sentry.Unity'
And $([MSBuild]::IsOsPlatform('Windows'))
And !Exists('$(SentryWindowsArtifactsDestination)sentry.dll')" BeforeTargets="BeforeBuild">
And ('$(RebuildNativeSdk)' == 'true' Or !Exists('$(SentryWindowsArtifactsDestination)sentry.dll'))" BeforeTargets="BeforeBuild">
<Error Condition="!Exists('$(SentryNativeRoot)')" Text="Couldn't find the Native root at $(SentryNativeRoot)."></Error>

<Message Importance="High" Text="Building artifacts of Sentry Native SDK for Windows." />
Expand All @@ -222,10 +286,15 @@
<Copy SourceFiles="@(NativeSdkArtifacts)" DestinationFiles="@(NativeSdkArtifacts->'$(SentryWindowsArtifactsDestination)%(Filename)%(Extension)')" />
</Target>

<!-- Build the Sentry Native SDK for Linux: dotnet msbuild /t:BuildLinuxSDK src/Sentry.Unity -->
<!--
Build the Sentry Native SDK for Linux:
dotnet msbuild /t:BuildLinuxSDK src/Sentry.Unity
Force a clean rebuild (bypass the "libsentry.so already exists" short-circuit):
dotnet msbuild /t:BuildLinuxSDK src/Sentry.Unity -p:RebuildNativeSdk=true
-->
<Target Name="BuildLinuxSDK" Condition="'$(MSBuildProjectName)' == 'Sentry.Unity'
And $([MSBuild]::IsOsPlatform('Linux'))
And !Exists('$(SentryLinuxArtifactsDestination)libsentry.so')" BeforeTargets="BeforeBuild">
And ('$(RebuildNativeSdk)' == 'true' Or !Exists('$(SentryLinuxArtifactsDestination)libsentry.so'))" BeforeTargets="BeforeBuild">
<Error Condition="!Exists('$(SentryNativeRoot)')" Text="Couldn't find the Native root at $(SentryNativeRoot)."></Error>

<Message Importance="High" Text="Building artifacts of Sentry Native SDK for Linux." />
Expand Down
2 changes: 1 addition & 1 deletion modules/sentry-java
Submodule sentry-java updated 68 files
+4 −0 .gitattributes
+23 −1 .github/dependabot.yml
+2 −2 .github/workflows/agp-matrix.yml
+14 −1 .github/workflows/build.yml
+1 −1 .github/workflows/changelog-preview.yml
+2 −2 .github/workflows/codeql-analysis.yml
+2 −2 .github/workflows/integration-tests-benchmarks.yml
+1 −1 .github/workflows/integration-tests-ui.yml
+1 −1 .github/workflows/release.yml
+1 −1 .github/workflows/spring-boot-2-matrix.yml
+1 −1 .github/workflows/spring-boot-3-matrix.yml
+1 −1 .github/workflows/spring-boot-4-matrix.yml
+1 −1 .github/workflows/system-tests-backend.yml
+1 −2 AGENTS.md
+12 −0 CHANGELOG.md
+2 −4 Makefile
+5 −5 gradle/libs.versions.toml
+ gradle/wrapper/gradle-wrapper.jar
+3 −1 gradle/wrapper/gradle-wrapper.properties
+1 −1 gradlew
+10 −21 gradlew.bat
+1 −1 requirements.txt
+11 −1 sentry-android-core/build.gradle.kts
+6 −0 sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java
+335 −0 sentry-android-core/src/main/java/io/sentry/android/core/AnrHeartbeatIntegration.java
+4 −0 sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java
+34 −0 sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java
+20 −2 sentry-android-core/src/test/java/io/sentry/android/core/ANRWatchDogTest.kt
+168 −0 sentry-android-core/src/test/java/io/sentry/android/core/AnrHeartbeatIntegrationTest.kt
+46 −46 sentry-android-core/src/test/java/io/sentry/android/core/AnrV2IntegrationTest.kt
+25 −0 sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt
+2 −55 sentry-android-core/src/test/java/io/sentry/android/core/ScreenshotEventProcessorTest.kt
+13 −0 sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidOptionsTest.kt
+29 −29 sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidTest.kt
+12 −12 sentry-android-core/src/test/java/io/sentry/android/core/internal/debugmeta/AssetsDebugMetaLoaderTest.kt
+8 −8 sentry-android-core/src/test/java/io/sentry/android/core/internal/modules/AssetsModulesLoaderTest.kt
+ sentry-android-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_all.png
+ sentry-android-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_custom_view.png
+ ...ore/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_ellipsized_compose_masked.png
+ ...e/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_ellipsized_compose_unmasked.png
+ ...d-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_ellipsized_view_masked.png
+ ...core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_ellipsized_view_unmasked.png
+ sentry-android-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_images.png
+ sentry-android-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_mask_text.png
+ ...roid-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_multiline_compose_masked.png
+ ...id-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_multiline_compose_unmasked.png
+ ...android-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_multiline_view_masked.png
+ ...droid-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_multiline_view_unmasked.png
+ sentry-android-core/src/test/resources/snapshots/ScreenshotEventProcessorTest/screenshot_no_masking.png
+15 −15 sentry-android-distribution/src/test/java/io/sentry/android/distribution/UpdateResponseParserTest.kt
+4 −14 sentry-android-integration-tests/sentry-uitest-android-benchmark/build.gradle.kts
+3 −3 ...ration-tests/sentry-uitest-android-critical/src/main/java/io/sentry/uitest/android/critical/MainActivity.kt
+2 −4 sentry-android-integration-tests/sentry-uitest-android/README.md
+4 −9 sentry-android-integration-tests/sentry-uitest-android/build.gradle.kts
+4 −4 ...roid-integration-tests/sentry-uitest-android/src/androidTest/java/io/sentry/uitest/android/EnvelopeTests.kt
+1 −1 sentry-android-integration-tests/test-app-plain/build.gradle.kts
+1 −1 sentry-android-integration-tests/test-app-sentry/build.gradle.kts
+11 −11 sentry-android-replay/src/main/java/io/sentry/android/replay/viewhierarchy/ComposeViewHierarchyNode.kt
+29 −29 sentry-android-replay/src/test/java/io/sentry/android/replay/AnrWithReplayIntegrationTest.kt
+7 −7 sentry-graphql-22/src/test/kotlin/io/sentry/graphql22/SentryInstrumentationTest.kt
+7 −7 sentry-graphql/src/test/kotlin/io/sentry/graphql/SentryInstrumentationTest.kt
+4 −4 sentry-test-support/src/main/kotlin/io/sentry/Assertions.kt
+39 −0 sentry/src/main/java/io/sentry/AnrHeartbeatRegistry.java
+62 −0 sentry/src/test/java/io/sentry/AnrHeartbeatRegistryTest.kt
+26 −26 sentry/src/test/java/io/sentry/JsonObjectDeserializerTest.kt
+42 −42 sentry/src/test/java/io/sentry/internal/debugmeta/ResourcesDebugMetaLoaderTest.kt
+8 −8 sentry/src/test/java/io/sentry/internal/modules/ResourcesModulesLoaderTest.kt
+6 −6 sentry/src/test/java/io/sentry/util/CollectionUtilsTest.kt
2 changes: 1 addition & 1 deletion modules/sentry-native
Submodule sentry-native updated 89 files
+1 −1 .github/workflows/benchmark.yml
+2 −2 .github/workflows/ci.yml
+2 −2 .github/workflows/codeql.yml
+24 −11 .github/workflows/console-check.yml
+33 −0 CHANGELOG.md
+70 −5 CMakeLists.txt
+38 −10 examples/example.c
+1 −1 external/crashpad
+138 −12 include/sentry.h
+1 −1 ndk/gradle.properties
+20 −0 ndk/lib/src/main/java/io/sentry/ndk/SentryNdk.java
+26 −0 ndk/lib/src/main/jni/sentry.c
+4 −4 scripts/run_tests.ps1
+24 −2 src/CMakeLists.txt
+63 −1 src/backends/native/minidump/sentry_minidump_format.h
+192 −0 src/backends/native/minidump/sentry_minidump_indirect.c
+109 −0 src/backends/native/minidump/sentry_minidump_indirect.h
+966 −140 src/backends/native/minidump/sentry_minidump_linux.c
+246 −5 src/backends/native/minidump/sentry_minidump_macos.c
+19 −5 src/backends/native/minidump/sentry_minidump_windows.c
+12 −1 src/backends/native/sentry_crash_context.h
+96 −24 src/backends/native/sentry_crash_daemon.c
+12 −0 src/backends/native/sentry_crash_handler.c
+229 −0 src/backends/native/sentry_wer.c
+6 −0 src/backends/native/sentry_wer.def
+30 −3 src/backends/sentry_backend_breakpad.cpp
+12 −6 src/backends/sentry_backend_crashpad.cpp
+17 −47 src/backends/sentry_backend_inproc.c
+127 −2 src/backends/sentry_backend_native.c
+1 −1 src/path/sentry_path.c
+1 −1 src/process/sentry_process_unix.c
+2 −1 src/process/sentry_process_windows.c
+0 −11 src/screenshot/sentry_screenshot_windows.c
+62 −13 src/sentry_attachment.c
+3 −13 src/sentry_attachment.h
+72 −46 src/sentry_core.c
+57 −1 src/sentry_database.c
+11 −0 src/sentry_database.h
+41 −37 src/sentry_envelope.c
+1 −1 src/sentry_envelope.h
+4 −6 src/sentry_hint.c
+2 −1 src/sentry_metrics.c
+78 −12 src/sentry_options.c
+12 −1 src/sentry_options.h
+71 −0 src/sentry_os.c
+5 −0 src/sentry_os.h
+22 −4 src/sentry_retry.c
+66 −8 src/sentry_scope.c
+15 −0 src/sentry_scope.h
+11 −11 src/sentry_session.c
+2 −1 src/sentry_session.h
+27 −0 src/sentry_session_replay.h
+9 −0 src/sentry_string.h
+216 −0 src/sentry_thread_sampler.c
+141 −5 src/sentry_tracing.c
+10 −0 src/sentry_tracing.h
+56 −0 src/sentry_utils.c
+22 −0 src/sentry_utils.h
+16 −1 src/sentry_value.c
+8 −0 src/sentry_value.h
+7 −0 src/session_replay/sentry_session_replay.c
+10 −0 src/session_replay/sentry_session_replay_none.c
+13 −8 src/transports/sentry_http_transport.c
+1 −1 tests/__init__.py
+22 −5 tests/assertions.py
+1 −0 tests/cmake.py
+5 −7 tests/conftest.py
+2 −2 tests/requirements.txt
+183 −11 tests/test_e2e_sentry.py
+34 −9 tests/test_integration_cache.py
+23 −20 tests/test_integration_crashpad.py
+4 −2 tests/test_integration_http.py
+46 −1 tests/test_integration_native.py
+2 −2 tests/test_integration_screenshot.py
+23 −5 tests/test_integration_stdout.py
+95 −2 tests/test_integration_transactions.py
+1 −0 tests/unit/CMakeLists.txt
+25 −9 tests/unit/test_attachments.c
+46 −0 tests/unit/test_basic.c
+28 −7 tests/unit/test_envelopes.c
+64 −0 tests/unit/test_retry.c
+84 −0 tests/unit/test_scope.c
+4 −3 tests/unit/test_session.c
+72 −0 tests/unit/test_thread_sampler.c
+366 −0 tests/unit/test_tracing.c
+227 −0 tests/unit/test_utils.c
+56 −1 tests/unit/test_value.c
+29 −0 tests/unit/tests.inc
+7 −1 vendor/libunwind/CMakeLists.txt
Loading
Loading