From ebd5db0b5cb7637cbfa8c94900b863fb8486a413 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Tue, 25 Mar 2025 13:17:48 +0200 Subject: [PATCH 01/18] Add screen capturing utility for iOS --- .../Private/Apple/AppleSentrySubsystem.cpp | 52 +++++++++++++++++++ .../Private/Apple/AppleSentrySubsystem.h | 3 ++ 2 files changed, 55 insertions(+) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index fe76d368c..9cd6a0bbb 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -26,12 +26,29 @@ #include "GenericPlatform/GenericPlatformOutputDevices.h" #include "HAL/FileManager.h" +#include "HAL/PlatformSentryAttachment.h" +#include "Misc/CoreDelegates.h" +#include "Misc/Paths.h" #include "UObject/GarbageCollection.h" #include "UObject/UObjectThreadContext.h" #include "Utils/SentryLogUtils.h" +#if PLATFORM_IOS && !WITH_EDITOR && !PLATFORM_VISIONOS +#include "IOS/IOSAppDelegate.h" +#endif + void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryTraceSampler* traceSampler) { + FCoreDelegates::OnHandleSystemError.AddLambda([this]() + { + + //SentryScreenshotUtils::CaptureScreenshot(IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*filePath)); + + + }); + + static bool onCrashCalled = false; + [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) setSdkName:@"sentry.cocoa.unreal"]; dispatch_group_t sentryDispatchGroup = dispatch_group_create(); @@ -59,8 +76,19 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US SentryAttachment* logAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:logFilePath.GetNSString()]; [scope addAttachment:logAttachment]; } + if (settings->AttachScreenshot) { + FString filePath = FPaths::Combine(FPaths::ProjectPersistentDownloadDir(), TEXT("screenshot1.png")); + const FString screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*filePath); + SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; + [scope addAttachment:screenshotAttachment]; + } return scope; }; + options.onCrashedLastRun = ^(SentryEvent* event) { + [SENTRY_APPLE_CLASS(SentrySDK) configureScope:^(SentryScope* scope) { + [scope clearAttachments]; + }]; + }; options.beforeSend = ^SentryEvent* (SentryEvent* event) { FGCScopeGuard GCScopeGuard; @@ -331,3 +359,27 @@ TSharedPtr FAppleSentrySubsystem::ContinueTrace(const return MakeShareable(new SentryTransactionContextApple(transactionContext)); } + +void FAppleSentrySubsystem::TryCaptureScreenshot() const +{ +#if PLATFORM_IOS && !WITH_EDITOR && !PLATFORM_VISIONOS + dispatch_async(dispatch_get_main_queue(), ^{ + UIGraphicsBeginImageContextWithOptions([IOSAppDelegate GetDelegate].RootView.bounds.size, NO, 2.0f); + [[IOSAppDelegate GetDelegate].RootView drawViewHierarchyInRect:[IOSAppDelegate GetDelegate].RootView.bounds afterScreenUpdates:YES]; + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + NSData *imageData = UIImagePNGRepresentation(image); + + TArray ImageBytes; + + uint32 SavedSize = imageData.length; + + ImageBytes.AddUninitialized(SavedSize); + FPlatformMemory::Memcpy(ImageBytes.GetData(), [imageData bytes], SavedSize); + + FString filePath = FPaths::Combine(FPaths::ProjectDir(), TEXT("screenshot1.png")); + FFileHelper::SaveArrayToFile(ImageBytes, *filePath); + }); +#endif +} diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h index 01138cb18..bd0a5960b 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h @@ -34,4 +34,7 @@ class FAppleSentrySubsystem : public ISentrySubsystem virtual TSharedPtr StartTransactionWithContextAndTimestamp(TSharedPtr context, int64 timestamp) override; virtual TSharedPtr StartTransactionWithContextAndOptions(TSharedPtr context, const TMap& options) override; virtual TSharedPtr ContinueTrace(const FString& sentryTrace, const TArray& baggageHeaders) override; + +private: + void TryCaptureScreenshot() const; }; From 7b685c97d1c237a4c6f71704aab9a05252e8415a Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Wed, 26 Mar 2025 13:04:52 +0200 Subject: [PATCH 02/18] Rework screenshot capturing for Apple --- .../Private/Apple/AppleSentrySubsystem.cpp | 42 +----------- .../Private/Apple/AppleSentrySubsystem.h | 6 +- .../Sentry/Private/IOS/IOSSentrySubsystem.cpp | 49 +++++++++++++ .../Sentry/Private/IOS/IOSSentrySubsystem.h | 10 +++ .../Sentry/Private/Mac/MacSentrySubsystem.cpp | 68 +++++++++++++++++++ .../Sentry/Private/Mac/MacSentrySubsystem.h | 11 ++- .../Source/Sentry/Private/SentrySubsystem.cpp | 9 ++- 7 files changed, 150 insertions(+), 45 deletions(-) create mode 100644 plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp create mode 100644 plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index 9cd6a0bbb..064a13ddf 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -28,27 +28,14 @@ #include "HAL/FileManager.h" #include "HAL/PlatformSentryAttachment.h" #include "Misc/CoreDelegates.h" +#include "Misc/FileHelper.h" #include "Misc/Paths.h" #include "UObject/GarbageCollection.h" #include "UObject/UObjectThreadContext.h" #include "Utils/SentryLogUtils.h" -#if PLATFORM_IOS && !WITH_EDITOR && !PLATFORM_VISIONOS -#include "IOS/IOSAppDelegate.h" -#endif - void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryTraceSampler* traceSampler) { - FCoreDelegates::OnHandleSystemError.AddLambda([this]() - { - - //SentryScreenshotUtils::CaptureScreenshot(IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*filePath)); - - - }); - - static bool onCrashCalled = false; - [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) setSdkName:@"sentry.cocoa.unreal"]; dispatch_group_t sentryDispatchGroup = dispatch_group_create(); @@ -77,8 +64,7 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US [scope addAttachment:logAttachment]; } if (settings->AttachScreenshot) { - FString filePath = FPaths::Combine(FPaths::ProjectPersistentDownloadDir(), TEXT("screenshot1.png")); - const FString screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*filePath); + const FString screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*GetScreenshotPath()); SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; [scope addAttachment:screenshotAttachment]; } @@ -359,27 +345,3 @@ TSharedPtr FAppleSentrySubsystem::ContinueTrace(const return MakeShareable(new SentryTransactionContextApple(transactionContext)); } - -void FAppleSentrySubsystem::TryCaptureScreenshot() const -{ -#if PLATFORM_IOS && !WITH_EDITOR && !PLATFORM_VISIONOS - dispatch_async(dispatch_get_main_queue(), ^{ - UIGraphicsBeginImageContextWithOptions([IOSAppDelegate GetDelegate].RootView.bounds.size, NO, 2.0f); - [[IOSAppDelegate GetDelegate].RootView drawViewHierarchyInRect:[IOSAppDelegate GetDelegate].RootView.bounds afterScreenUpdates:YES]; - UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - - NSData *imageData = UIImagePNGRepresentation(image); - - TArray ImageBytes; - - uint32 SavedSize = imageData.length; - - ImageBytes.AddUninitialized(SavedSize); - FPlatformMemory::Memcpy(ImageBytes.GetData(), [imageData bytes], SavedSize); - - FString filePath = FPaths::Combine(FPaths::ProjectDir(), TEXT("screenshot1.png")); - FFileHelper::SaveArrayToFile(ImageBytes, *filePath); - }); -#endif -} diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h index bd0a5960b..7fa75aa12 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h @@ -35,6 +35,8 @@ class FAppleSentrySubsystem : public ISentrySubsystem virtual TSharedPtr StartTransactionWithContextAndOptions(TSharedPtr context, const TMap& options) override; virtual TSharedPtr ContinueTrace(const FString& sentryTrace, const TArray& baggageHeaders) override; -private: - void TryCaptureScreenshot() const; + virtual void TryCaptureScreenshot() const {}; + +protected: + virtual FString GetScreenshotPath() const { return FString(); } }; diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp new file mode 100644 index 000000000..2db2d3799 --- /dev/null +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp @@ -0,0 +1,49 @@ +#include "IOS/IOSSentrySubsystem.h" + +#include "IOS/IOSAppDelegate.h" + +#include "SentryDefines.h" +#include "SentrySettings.h" + +#include "Misc/CoreDelegates.h" +#include "Misc/FileHelper.h" +#include "Misc/Paths.h" + +void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, + USentryTraceSampler* TraceSampler) +{ + FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, TraceSampler); +} + +void FIOSSentrySubsystem::TryCaptureScreenshot() const +{ + dispatch_sync(dispatch_get_main_queue(), ^{ + UIGraphicsBeginImageContextWithOptions([IOSAppDelegate GetDelegate].RootView.bounds.size, NO, 2.0f); + [[IOSAppDelegate GetDelegate].RootView drawViewHierarchyInRect:[IOSAppDelegate GetDelegate].RootView.bounds afterScreenUpdates:YES]; + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + NSData *ImageData = UIImagePNGRepresentation(image); + + TArray ImageBytes; + uint32 SavedSize = ImageData.length; + ImageBytes.AddUninitialized(SavedSize); + FPlatformMemory::Memcpy(ImageBytes.GetData(), [ImageData bytes], SavedSize); + + FString FilePath = GetScreenshotPath(); + + if (FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) + { + UE_LOG(LogSentrySdk, Log, TEXT("Screenshot saved to: %s"), *FilePath); + } + else + { + UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot.")); + } + }); +} + +FString FIOSSentrySubsystem::GetScreenshotPath() const +{ + return FPaths::Combine(FPaths::ProjectSavedDir(), TEXT("screenshot.png")); +} diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h index 0b53914b5..f04bc2ea7 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h @@ -4,7 +4,17 @@ class FIOSSentrySubsystem : public FAppleSentrySubsystem { +public: + virtual void InitWithSettings( + const USentrySettings* Settings, + USentryBeforeSendHandler* BeforeSendHandler, + USentryTraceSampler* TraceSampler + ) override; + virtual void TryCaptureScreenshot() const override; + +protected: + virtual FString GetScreenshotPath() const override; }; typedef FIOSSentrySubsystem FPlatformSentrySubsystem; diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp new file mode 100644 index 000000000..c83b4793a --- /dev/null +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -0,0 +1,68 @@ +#include "Mac/MacSentrySubsystem.h" + +#include "SentryDefines.h" +#include "SentrySettings.h" + +#include "Misc/CoreDelegates.h" +#include "Misc/FileHelper.h" +#include "Misc/Paths.h" + +void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, + USentryTraceSampler* TraceSampler) +{ + FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, TraceSampler); + + if (Settings->AttachScreenshot) + { + FCoreDelegates::OnHandleSystemError.AddLambda([this]() + { + TryCaptureScreenshot(); + }); + } +} + +void FMacSentrySubsystem::TryCaptureScreenshot() const +{ + NSWindow* MainWindow = [NSApp mainWindow]; + if (!MainWindow) + { + UE_LOG(LogSentrySdk, Log, TEXT("No main window found!")); + return; + } + + NSRect WindowRect = [MainWindow frame]; + CGWindowID WindowID = (CGWindowID)[MainWindow windowNumber]; + CGImageRef ScreenshotRef = CGWindowListCreateImage(WindowRect, kCGWindowListOptionIncludingWindow, WindowID, kCGWindowImageDefault); + + if (!ScreenshotRef) + { + UE_LOG(LogSentrySdk, Log, TEXT("Failed to capture screenshot.")); + return; + } + + NSBitmapImageRep* BitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:ScreenshotRef]; + NSData* ImageData = [BitmapRep representationUsingType:NSBitmapImageFileTypePNG properties:@{}]; + + TArray ImageBytes; + uint32 SavedSize = (uint32)[ImageData length]; + ImageBytes.AddUninitialized(SavedSize); + FPlatformMemory::Memcpy(ImageBytes.GetData(), [ImageData bytes], SavedSize); + + FString FilePath = GetScreenshotPath(); + + if (FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) + { + UE_LOG(LogSentrySdk, Log, TEXT("Screenshot saved to: %s"), *FilePath); + } + else + { + UE_LOG(LogSentrySdk, Log, TEXT("Failed to save screenshot.")); + } + + CGImageRelease(ScreenshotRef); +} + +FString FMacSentrySubsystem::GetScreenshotPath() const +{ + return FPaths::Combine(FPaths::ProjectSavedDir(), TEXT("screenshot.png")); +} diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h index a7eed3842..7a28965fb 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h @@ -4,8 +4,17 @@ class FMacSentrySubsystem : public FAppleSentrySubsystem { -protected: +public: + virtual void InitWithSettings( + const USentrySettings* Settings, + USentryBeforeSendHandler* BeforeSendHandler, + USentryTraceSampler* TraceSampler + ) override; + + virtual void TryCaptureScreenshot() const override; +protected: + virtual FString GetScreenshotPath() const override; }; typedef FMacSentrySubsystem FPlatformSentrySubsystem; diff --git a/plugin-dev/Source/Sentry/Private/SentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/SentrySubsystem.cpp index 0b9ecb454..11771b394 100644 --- a/plugin-dev/Source/Sentry/Private/SentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/SentrySubsystem.cpp @@ -804,8 +804,13 @@ void USentrySubsystem::ConfigureErrorOutputDevice() GError->HandleError(); PLATFORM_BREAK(); }); -#endif // PLATFORM_ANDROID - +#elif PLATFORM_IOS + OnAssertDelegate = OutputDeviceError->OnAssert.AddWeakLambda(this, [this](const FString& Message) + { + check(SubsystemNativeImpl); + StaticCastSharedPtr(SubsystemNativeImpl)->TryCaptureScreenshot(); + }); +#endif GError = OutputDeviceError.Get(); } } From 36026ed9be260b6c69088ca854c19da7980210fd Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Thu, 27 Mar 2025 12:59:25 +0200 Subject: [PATCH 03/18] Update snapshot --- scripts/packaging/package-github.snapshot | 860 +++++++++--------- .../packaging/package-marketplace.snapshot | 854 ++++++++--------- 2 files changed, 859 insertions(+), 855 deletions(-) diff --git a/scripts/packaging/package-github.snapshot b/scripts/packaging/package-github.snapshot index d1388816a..0e9c9643a 100644 --- a/scripts/packaging/package-github.snapshot +++ b/scripts/packaging/package-github.snapshot @@ -1,429 +1,431 @@ -CHANGELOG.md -Config/FilterPlugin.ini -Gradle/gradle-wrapper.properties -LICENSE -Resources/Icon128.png -Scripts/upload-debug-symbols.sh -Scripts/upload-debug-symbols-win.bat -Sentry.uplugin -sentry-cli.properties -Source/Sentry/Private/Android/AndroidSentrySubsystem.cpp -Source/Sentry/Private/Android/AndroidSentrySubsystem.h -Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.cpp -Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.h -Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.cpp -Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.h -Source/Sentry/Private/Android/Infrastructure/SentryDataTypesAndroid.h -Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.cpp -Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.h -Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.cpp -Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.h -Source/Sentry/Private/Android/Java/SentryBridgeJava.java -Source/Sentry/Private/Android/Jni/SentryJniAndroid.cpp -Source/Sentry/Private/Android/SentryAttachmentAndroid.cpp -Source/Sentry/Private/Android/SentryAttachmentAndroid.h -Source/Sentry/Private/Android/SentryBreadcrumbAndroid.cpp -Source/Sentry/Private/Android/SentryBreadcrumbAndroid.h -Source/Sentry/Private/Android/SentryEventAndroid.cpp -Source/Sentry/Private/Android/SentryEventAndroid.h -Source/Sentry/Private/Android/SentryHintAndroid.cpp -Source/Sentry/Private/Android/SentryHintAndroid.h -Source/Sentry/Private/Android/SentryIdAndroid.cpp -Source/Sentry/Private/Android/SentryIdAndroid.h -Source/Sentry/Private/Android/SentryMessageAndroid.cpp -Source/Sentry/Private/Android/SentryMessageAndroid.h -Source/Sentry/Private/Android/SentrySamplingContextAndroid.cpp -Source/Sentry/Private/Android/SentrySamplingContextAndroid.h -Source/Sentry/Private/Android/SentryScopeAndroid.cpp -Source/Sentry/Private/Android/SentryScopeAndroid.h -Source/Sentry/Private/Android/SentrySpanAndroid.cpp -Source/Sentry/Private/Android/SentrySpanAndroid.h -Source/Sentry/Private/Android/SentryTransactionAndroid.cpp -Source/Sentry/Private/Android/SentryTransactionAndroid.h -Source/Sentry/Private/Android/SentryTransactionContextAndroid.cpp -Source/Sentry/Private/Android/SentryTransactionContextAndroid.h -Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.cpp -Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.h -Source/Sentry/Private/Android/SentryUserAndroid.cpp -Source/Sentry/Private/Android/SentryUserAndroid.h -Source/Sentry/Private/Android/SentryUserFeedbackAndroid.cpp -Source/Sentry/Private/Android/SentryUserFeedbackAndroid.h -Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp -Source/Sentry/Private/Apple/AppleSentrySubsystem.h -Source/Sentry/Private/Apple/Convenience/SentryInclude.h -Source/Sentry/Private/Apple/Convenience/SentryMacro.h -Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.cpp -Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.h -Source/Sentry/Private/Apple/SentryAttachmentApple.cpp -Source/Sentry/Private/Apple/SentryAttachmentApple.h -Source/Sentry/Private/Apple/SentryBreadcrumbApple.cpp -Source/Sentry/Private/Apple/SentryBreadcrumbApple.h -Source/Sentry/Private/Apple/SentryEventApple.cpp -Source/Sentry/Private/Apple/SentryEventApple.h -Source/Sentry/Private/Apple/SentryIdApple.cpp -Source/Sentry/Private/Apple/SentryIdApple.h -Source/Sentry/Private/Apple/SentrySamplingContextApple.cpp -Source/Sentry/Private/Apple/SentrySamplingContextApple.h -Source/Sentry/Private/Apple/SentryScopeApple.cpp -Source/Sentry/Private/Apple/SentryScopeApple.h -Source/Sentry/Private/Apple/SentrySpanApple.cpp -Source/Sentry/Private/Apple/SentrySpanApple.h -Source/Sentry/Private/Apple/SentryTransactionApple.cpp -Source/Sentry/Private/Apple/SentryTransactionApple.h -Source/Sentry/Private/Apple/SentryTransactionContextApple.cpp -Source/Sentry/Private/Apple/SentryTransactionContextApple.h -Source/Sentry/Private/Apple/SentryUserApple.cpp -Source/Sentry/Private/Apple/SentryUserApple.h -Source/Sentry/Private/Apple/SentryUserFeedbackApple.cpp -Source/Sentry/Private/Apple/SentryUserFeedbackApple.h -Source/Sentry/Private/GenericPlatform/Convenience/SentryInclude.h -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.cpp -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.h -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.cpp -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.h -Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.cpp -Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.h -Source/Sentry/Private/HAL/PlatformSentryAttachment.h -Source/Sentry/Private/HAL/PlatformSentryBreadcrumb.h -Source/Sentry/Private/HAL/PlatformSentryEvent.h -Source/Sentry/Private/HAL/PlatformSentryHint.h -Source/Sentry/Private/HAL/PlatformSentryId.h -Source/Sentry/Private/HAL/PlatformSentrySamplingContext.h -Source/Sentry/Private/HAL/PlatformSentryScope.h -Source/Sentry/Private/HAL/PlatformSentrySpan.h -Source/Sentry/Private/HAL/PlatformSentrySubsystem.h -Source/Sentry/Private/HAL/PlatformSentryTransaction.h -Source/Sentry/Private/HAL/PlatformSentryTransactionContext.h -Source/Sentry/Private/HAL/PlatformSentryUser.h -Source/Sentry/Private/HAL/PlatformSentryUserFeedback.h -Source/Sentry/Private/Interface/SentryAttachmentInterface.h -Source/Sentry/Private/Interface/SentryBreadcrumbInterface.h -Source/Sentry/Private/Interface/SentryEventInterface.h -Source/Sentry/Private/Interface/SentryHintInterface.h -Source/Sentry/Private/Interface/SentryIdInterface.h -Source/Sentry/Private/Interface/SentrySamplingContextInterface.h -Source/Sentry/Private/Interface/SentryScopeInterface.h -Source/Sentry/Private/Interface/SentrySpanInterface.h -Source/Sentry/Private/Interface/SentrySubsystemInterface.h -Source/Sentry/Private/Interface/SentryTransactionContextInterface.h -Source/Sentry/Private/Interface/SentryTransactionInterface.h -Source/Sentry/Private/Interface/SentryUserFeedbackInterface.h -Source/Sentry/Private/Interface/SentryUserInterface.h -Source/Sentry/Private/IOS/IOSSentrySubsystem.h -Source/Sentry/Private/Linux/LinuxSentrySubsystem.cpp -Source/Sentry/Private/Linux/LinuxSentrySubsystem.h -Source/Sentry/Private/Mac/MacSentrySubsystem.h -Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.cpp -Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.h -Source/Sentry/Private/Null/NullSentryAttachment.h -Source/Sentry/Private/Null/NullSentryHint.h -Source/Sentry/Private/Null/NullSentrySamplingContext.h -Source/Sentry/Private/SentryAttachment.cpp -Source/Sentry/Private/SentryBeforeSendHandler.cpp -Source/Sentry/Private/SentryBreadcrumb.cpp -Source/Sentry/Private/SentryDefines.h -Source/Sentry/Private/SentryErrorOutputDevice.cpp -Source/Sentry/Private/SentryEvent.cpp -Source/Sentry/Private/SentryHint.cpp -Source/Sentry/Private/SentryId.cpp -Source/Sentry/Private/SentryLibrary.cpp -Source/Sentry/Private/SentryModule.cpp -Source/Sentry/Private/SentryOutputDevice.cpp -Source/Sentry/Private/SentrySamplingContext.cpp -Source/Sentry/Private/SentryScope.cpp -Source/Sentry/Private/SentrySettings.cpp -Source/Sentry/Private/SentrySpan.cpp -Source/Sentry/Private/SentrySubsystem.cpp -Source/Sentry/Private/SentryTraceSampler.cpp -Source/Sentry/Private/SentryTransaction.cpp -Source/Sentry/Private/SentryTransactionContext.cpp -Source/Sentry/Private/SentryUser.cpp -Source/Sentry/Private/SentryUserFeedback.cpp -Source/Sentry/Private/Tests/SentryBreadcrumb.spec.cpp -Source/Sentry/Private/Tests/SentryEvent.spec.cpp -Source/Sentry/Private/Tests/SentryScope.spec.cpp -Source/Sentry/Private/Tests/SentrySubsystem.spec.cpp -Source/Sentry/Private/Tests/SentryTests.h -Source/Sentry/Private/Tests/SentryUser.spec.cpp -Source/Sentry/Private/Utils/SentryFileUtils.cpp -Source/Sentry/Private/Utils/SentryFileUtils.h -Source/Sentry/Private/Utils/SentryLogUtils.cpp -Source/Sentry/Private/Utils/SentryLogUtils.h -Source/Sentry/Private/Utils/SentryScreenshotUtils.cpp -Source/Sentry/Private/Utils/SentryScreenshotUtils.h -Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.cpp -Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.h -Source/Sentry/Private/Windows/WindowsSentrySubsystem.cpp -Source/Sentry/Private/Windows/WindowsSentrySubsystem.h -Source/Sentry/Public/SentryAttachment.h -Source/Sentry/Public/SentryBeforeSendHandler.h -Source/Sentry/Public/SentryBreadcrumb.h -Source/Sentry/Public/SentryDataTypes.h -Source/Sentry/Public/SentryErrorOutputDevice.h -Source/Sentry/Public/SentryEvent.h -Source/Sentry/Public/SentryHint.h -Source/Sentry/Public/SentryId.h -Source/Sentry/Public/SentryImplWrapper.h -Source/Sentry/Public/SentryLibrary.h -Source/Sentry/Public/SentryModule.h -Source/Sentry/Public/SentryOutputDevice.h -Source/Sentry/Public/SentrySamplingContext.h -Source/Sentry/Public/SentryScope.h -Source/Sentry/Public/SentrySettings.h -Source/Sentry/Public/SentrySpan.h -Source/Sentry/Public/SentrySubsystem.h -Source/Sentry/Public/SentryTraceSampler.h -Source/Sentry/Public/SentryTransaction.h -Source/Sentry/Public/SentryTransactionContext.h -Source/Sentry/Public/SentryUser.h -Source/Sentry/Public/SentryUserFeedback.h -Source/Sentry/Sentry.Build.cs -Source/Sentry/Sentry_Android_UPL.xml -Source/Sentry/Sentry_IOS_UPL.xml -Source/SentryEditor/Private/SentryEditorModule.cpp -Source/SentryEditor/Private/SentrySettingsCustomization.cpp -Source/SentryEditor/Private/SentrySymToolsDownloader.cpp -Source/SentryEditor/Public/SentryEditorModule.h -Source/SentryEditor/Public/SentrySettingsCustomization.h -Source/SentryEditor/Public/SentrySymToolsDownloader.h -Source/SentryEditor/SentryEditor.Build.cs -Source/ThirdParty/Android/sentry.jar -Source/ThirdParty/Android/sentry-android-core-release.aar -Source/ThirdParty/Android/sentry-android-ndk-release.aar -Source/ThirdParty/Android/sentry-native-ndk-release.aar -Source/ThirdParty/CLI/sentry-cli-Darwin-universal -Source/ThirdParty/CLI/sentry-cli-Linux-x86_64 -Source/ThirdParty/CLI/sentry-cli-Windows-x86_64.exe -Source/ThirdParty/IOS/Sentry.embeddedframework.zip -Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryAttachment.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBaggage.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBreadcrumb.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryClient.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryCrashExceptionApplication.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugImageProvider.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugMeta.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDefines.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDsn.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEnvelopeItemHeader.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryError.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEvent.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryException.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryFrame.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryGeo.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHttpStatusCodeRange.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHub.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMeasurementUnit.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanism.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanismMeta.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMessage.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryNSError.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryOptions.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryProfilingConditionals.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryReplayApi.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryRequest.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySampleDecision.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySamplingContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryScope.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySDK.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySerializable.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanId.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanProtocol.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanStatus.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryStacktrace.h -Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry-Swift.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryThread.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceHeader.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTransactionContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUser.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUserFeedback.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryWithoutUIKit.h -Source/ThirdParty/IOS/Sentry.framework/Info.plist -Source/ThirdParty/IOS/Sentry.framework/Modules/module.modulemap -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.abi.json -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.private.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftdoc -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.abi.json -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.private.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftdoc -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/PrivacyInfo.xcprivacy -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivateSentrySDKOnly.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivatesHeader.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAppStartMeasurement.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAsynchronousOperation.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAutoSessionTrackingIntegration.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBaseIntegration.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBinaryImageCache.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBreadcrumb+Private.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashInstallationReporter.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportConverter.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportSink.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDateUtils.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDebugImageProvider+HybridSDKs.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDependencyContainer.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelope.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelopeItemType.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryExtraPackages.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFormatter.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFramesTracker.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryInternalSerializable.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryLog.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDataUtils.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDictionarySanitize.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+HybridSDKs.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+Private.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryRequestOperation.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryScreenFrames.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySDK+Private.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkInfo.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkPackage.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration-Hybrid.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwift.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwizzle.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryUser+Private.h -Source/ThirdParty/IOS/Sentry.framework/Sentry -Source/ThirdParty/Linux/bin/crashpad_handler -Source/ThirdParty/Linux/include/sentry.h -Source/ThirdParty/Linux/lib/libcrashpad_client.a -Source/ThirdParty/Linux/lib/libcrashpad_compat.a -Source/ThirdParty/Linux/lib/libcrashpad_handler_lib.a -Source/ThirdParty/Linux/lib/libcrashpad_minidump.a -Source/ThirdParty/Linux/lib/libcrashpad_snapshot.a -Source/ThirdParty/Linux/lib/libcrashpad_tools.a -Source/ThirdParty/Linux/lib/libcrashpad_util.a -Source/ThirdParty/Linux/lib/libmini_chromium.a -Source/ThirdParty/Linux/lib/libsentry.a -Source/ThirdParty/LinuxArm64/bin/crashpad_handler -Source/ThirdParty/LinuxArm64/include/sentry.h -Source/ThirdParty/LinuxArm64/lib/libcrashpad_client.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_compat.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_handler_lib.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_minidump.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_snapshot.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_tools.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_util.a -Source/ThirdParty/LinuxArm64/lib/libmini_chromium.a -Source/ThirdParty/LinuxArm64/lib/libsentry.a -Source/ThirdParty/Mac/bin/sentry.dylib -Source/ThirdParty/Mac/include/Sentry/PrivateSentrySDKOnly.h -Source/ThirdParty/Mac/include/Sentry/PrivatesHeader.h -Source/ThirdParty/Mac/include/Sentry/Sentry.h -Source/ThirdParty/Mac/include/Sentry/SentryAppStartMeasurement.h -Source/ThirdParty/Mac/include/Sentry/SentryAsynchronousOperation.h -Source/ThirdParty/Mac/include/Sentry/SentryAttachment.h -Source/ThirdParty/Mac/include/Sentry/SentryAutoSessionTrackingIntegration.h -Source/ThirdParty/Mac/include/Sentry/SentryBaggage.h -Source/ThirdParty/Mac/include/Sentry/SentryBaseIntegration.h -Source/ThirdParty/Mac/include/Sentry/SentryBinaryImageCache.h -Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb.h -Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb+Private.h -Source/ThirdParty/Mac/include/Sentry/SentryClient.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashExceptionApplication.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashInstallationReporter.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashReportConverter.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashReportSink.h -Source/ThirdParty/Mac/include/Sentry/SentryDateUtils.h -Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider.h -Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider+HybridSDKs.h -Source/ThirdParty/Mac/include/Sentry/SentryDebugMeta.h -Source/ThirdParty/Mac/include/Sentry/SentryDefines.h -Source/ThirdParty/Mac/include/Sentry/SentryDependencyContainer.h -Source/ThirdParty/Mac/include/Sentry/SentryDsn.h -Source/ThirdParty/Mac/include/Sentry/SentryEnvelope.h -Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemHeader.h -Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemType.h -Source/ThirdParty/Mac/include/Sentry/SentryError.h -Source/ThirdParty/Mac/include/Sentry/SentryEvent.h -Source/ThirdParty/Mac/include/Sentry/SentryException.h -Source/ThirdParty/Mac/include/Sentry/SentryExtraPackages.h -Source/ThirdParty/Mac/include/Sentry/SentryFormatter.h -Source/ThirdParty/Mac/include/Sentry/SentryFrame.h -Source/ThirdParty/Mac/include/Sentry/SentryFramesTracker.h -Source/ThirdParty/Mac/include/Sentry/SentryGeo.h -Source/ThirdParty/Mac/include/Sentry/SentryHttpStatusCodeRange.h -Source/ThirdParty/Mac/include/Sentry/SentryHub.h -Source/ThirdParty/Mac/include/Sentry/SentryInternalSerializable.h -Source/ThirdParty/Mac/include/Sentry/SentryLog.h -Source/ThirdParty/Mac/include/Sentry/SentryMeasurementUnit.h -Source/ThirdParty/Mac/include/Sentry/SentryMechanism.h -Source/ThirdParty/Mac/include/Sentry/SentryMechanismMeta.h -Source/ThirdParty/Mac/include/Sentry/SentryMessage.h -Source/ThirdParty/Mac/include/Sentry/SentryNSDataUtils.h -Source/ThirdParty/Mac/include/Sentry/SentryNSDictionarySanitize.h -Source/ThirdParty/Mac/include/Sentry/SentryNSError.h -Source/ThirdParty/Mac/include/Sentry/SentryOptions.h -Source/ThirdParty/Mac/include/Sentry/SentryOptions+HybridSDKs.h -Source/ThirdParty/Mac/include/Sentry/SentryOptions+Private.h -Source/ThirdParty/Mac/include/Sentry/SentryProfilingConditionals.h -Source/ThirdParty/Mac/include/Sentry/SentryReplayApi.h -Source/ThirdParty/Mac/include/Sentry/SentryRequest.h -Source/ThirdParty/Mac/include/Sentry/SentryRequestOperation.h -Source/ThirdParty/Mac/include/Sentry/SentrySampleDecision.h -Source/ThirdParty/Mac/include/Sentry/SentrySamplingContext.h -Source/ThirdParty/Mac/include/Sentry/SentryScope.h -Source/ThirdParty/Mac/include/Sentry/SentryScreenFrames.h -Source/ThirdParty/Mac/include/Sentry/SentrySDK.h -Source/ThirdParty/Mac/include/Sentry/SentrySDK+Private.h -Source/ThirdParty/Mac/include/Sentry/SentrySdkInfo.h -Source/ThirdParty/Mac/include/Sentry/SentrySdkPackage.h -Source/ThirdParty/Mac/include/Sentry/SentrySerializable.h -Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration.h -Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration-Hybrid.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanContext.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanId.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanProtocol.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanStatus.h -Source/ThirdParty/Mac/include/Sentry/SentryStacktrace.h -Source/ThirdParty/Mac/include/Sentry/SentrySwift.h -Source/ThirdParty/Mac/include/Sentry/Sentry-Swift.h -Source/ThirdParty/Mac/include/Sentry/SentrySwizzle.h -Source/ThirdParty/Mac/include/Sentry/SentryThread.h -Source/ThirdParty/Mac/include/Sentry/SentryTraceContext.h -Source/ThirdParty/Mac/include/Sentry/SentryTraceHeader.h -Source/ThirdParty/Mac/include/Sentry/SentryTransactionContext.h -Source/ThirdParty/Mac/include/Sentry/SentryUser.h -Source/ThirdParty/Mac/include/Sentry/SentryUser+Private.h -Source/ThirdParty/Mac/include/Sentry/SentryUserFeedback.h -Source/ThirdParty/Mac/include/Sentry/SentryWithoutUIKit.h -Source/ThirdParty/Win64/Breakpad/include/sentry.h -Source/ThirdParty/Win64/Breakpad/lib/breakpad_client.lib -Source/ThirdParty/Win64/Breakpad/lib/sentry.lib -Source/ThirdParty/Win64/Crashpad/bin/crashpad_handler.exe -Source/ThirdParty/Win64/Crashpad/bin/crashpad_wer.dll -Source/ThirdParty/Win64/Crashpad/include/sentry.h -Source/ThirdParty/Win64/Crashpad/lib/crashpad_client.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_compat.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_getopt.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_handler_lib.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_minidump.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_snapshot.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_tools.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_util.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_zlib.lib -Source/ThirdParty/Win64/Crashpad/lib/mini_chromium.lib -Source/ThirdParty/Win64/Crashpad/lib/sentry.lib +CHANGELOG.md +Config/FilterPlugin.ini +Gradle/gradle-wrapper.properties +LICENSE +Resources/Icon128.png +Scripts/upload-debug-symbols-win.bat +Scripts/upload-debug-symbols.sh +sentry-cli.properties +Sentry.uplugin +Source/Sentry/Private/Android/AndroidSentrySubsystem.cpp +Source/Sentry/Private/Android/AndroidSentrySubsystem.h +Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.cpp +Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.h +Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.cpp +Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.h +Source/Sentry/Private/Android/Infrastructure/SentryDataTypesAndroid.h +Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.cpp +Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.h +Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.cpp +Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.h +Source/Sentry/Private/Android/Java/SentryBridgeJava.java +Source/Sentry/Private/Android/Jni/SentryJniAndroid.cpp +Source/Sentry/Private/Android/SentryAttachmentAndroid.cpp +Source/Sentry/Private/Android/SentryAttachmentAndroid.h +Source/Sentry/Private/Android/SentryBreadcrumbAndroid.cpp +Source/Sentry/Private/Android/SentryBreadcrumbAndroid.h +Source/Sentry/Private/Android/SentryEventAndroid.cpp +Source/Sentry/Private/Android/SentryEventAndroid.h +Source/Sentry/Private/Android/SentryHintAndroid.cpp +Source/Sentry/Private/Android/SentryHintAndroid.h +Source/Sentry/Private/Android/SentryIdAndroid.cpp +Source/Sentry/Private/Android/SentryIdAndroid.h +Source/Sentry/Private/Android/SentryMessageAndroid.cpp +Source/Sentry/Private/Android/SentryMessageAndroid.h +Source/Sentry/Private/Android/SentrySamplingContextAndroid.cpp +Source/Sentry/Private/Android/SentrySamplingContextAndroid.h +Source/Sentry/Private/Android/SentryScopeAndroid.cpp +Source/Sentry/Private/Android/SentryScopeAndroid.h +Source/Sentry/Private/Android/SentrySpanAndroid.cpp +Source/Sentry/Private/Android/SentrySpanAndroid.h +Source/Sentry/Private/Android/SentryTransactionAndroid.cpp +Source/Sentry/Private/Android/SentryTransactionAndroid.h +Source/Sentry/Private/Android/SentryTransactionContextAndroid.cpp +Source/Sentry/Private/Android/SentryTransactionContextAndroid.h +Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.cpp +Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.h +Source/Sentry/Private/Android/SentryUserAndroid.cpp +Source/Sentry/Private/Android/SentryUserAndroid.h +Source/Sentry/Private/Android/SentryUserFeedbackAndroid.cpp +Source/Sentry/Private/Android/SentryUserFeedbackAndroid.h +Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +Source/Sentry/Private/Apple/AppleSentrySubsystem.h +Source/Sentry/Private/Apple/Convenience/SentryInclude.h +Source/Sentry/Private/Apple/Convenience/SentryMacro.h +Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.cpp +Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.h +Source/Sentry/Private/Apple/SentryAttachmentApple.cpp +Source/Sentry/Private/Apple/SentryAttachmentApple.h +Source/Sentry/Private/Apple/SentryBreadcrumbApple.cpp +Source/Sentry/Private/Apple/SentryBreadcrumbApple.h +Source/Sentry/Private/Apple/SentryEventApple.cpp +Source/Sentry/Private/Apple/SentryEventApple.h +Source/Sentry/Private/Apple/SentryIdApple.cpp +Source/Sentry/Private/Apple/SentryIdApple.h +Source/Sentry/Private/Apple/SentrySamplingContextApple.cpp +Source/Sentry/Private/Apple/SentrySamplingContextApple.h +Source/Sentry/Private/Apple/SentryScopeApple.cpp +Source/Sentry/Private/Apple/SentryScopeApple.h +Source/Sentry/Private/Apple/SentrySpanApple.cpp +Source/Sentry/Private/Apple/SentrySpanApple.h +Source/Sentry/Private/Apple/SentryTransactionApple.cpp +Source/Sentry/Private/Apple/SentryTransactionApple.h +Source/Sentry/Private/Apple/SentryTransactionContextApple.cpp +Source/Sentry/Private/Apple/SentryTransactionContextApple.h +Source/Sentry/Private/Apple/SentryUserApple.cpp +Source/Sentry/Private/Apple/SentryUserApple.h +Source/Sentry/Private/Apple/SentryUserFeedbackApple.cpp +Source/Sentry/Private/Apple/SentryUserFeedbackApple.h +Source/Sentry/Private/GenericPlatform/Convenience/SentryInclude.h +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.cpp +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.h +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.cpp +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.h +Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.cpp +Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.h +Source/Sentry/Private/HAL/PlatformSentryAttachment.h +Source/Sentry/Private/HAL/PlatformSentryBreadcrumb.h +Source/Sentry/Private/HAL/PlatformSentryEvent.h +Source/Sentry/Private/HAL/PlatformSentryHint.h +Source/Sentry/Private/HAL/PlatformSentryId.h +Source/Sentry/Private/HAL/PlatformSentrySamplingContext.h +Source/Sentry/Private/HAL/PlatformSentryScope.h +Source/Sentry/Private/HAL/PlatformSentrySpan.h +Source/Sentry/Private/HAL/PlatformSentrySubsystem.h +Source/Sentry/Private/HAL/PlatformSentryTransaction.h +Source/Sentry/Private/HAL/PlatformSentryTransactionContext.h +Source/Sentry/Private/HAL/PlatformSentryUser.h +Source/Sentry/Private/HAL/PlatformSentryUserFeedback.h +Source/Sentry/Private/Interface/SentryAttachmentInterface.h +Source/Sentry/Private/Interface/SentryBreadcrumbInterface.h +Source/Sentry/Private/Interface/SentryEventInterface.h +Source/Sentry/Private/Interface/SentryHintInterface.h +Source/Sentry/Private/Interface/SentryIdInterface.h +Source/Sentry/Private/Interface/SentrySamplingContextInterface.h +Source/Sentry/Private/Interface/SentryScopeInterface.h +Source/Sentry/Private/Interface/SentrySpanInterface.h +Source/Sentry/Private/Interface/SentrySubsystemInterface.h +Source/Sentry/Private/Interface/SentryTransactionContextInterface.h +Source/Sentry/Private/Interface/SentryTransactionInterface.h +Source/Sentry/Private/Interface/SentryUserFeedbackInterface.h +Source/Sentry/Private/Interface/SentryUserInterface.h +Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +Source/Sentry/Private/IOS/IOSSentrySubsystem.h +Source/Sentry/Private/Linux/LinuxSentrySubsystem.cpp +Source/Sentry/Private/Linux/LinuxSentrySubsystem.h +Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +Source/Sentry/Private/Mac/MacSentrySubsystem.h +Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.cpp +Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.h +Source/Sentry/Private/Null/NullSentryAttachment.h +Source/Sentry/Private/Null/NullSentryHint.h +Source/Sentry/Private/Null/NullSentrySamplingContext.h +Source/Sentry/Private/SentryAttachment.cpp +Source/Sentry/Private/SentryBeforeSendHandler.cpp +Source/Sentry/Private/SentryBreadcrumb.cpp +Source/Sentry/Private/SentryDefines.h +Source/Sentry/Private/SentryErrorOutputDevice.cpp +Source/Sentry/Private/SentryEvent.cpp +Source/Sentry/Private/SentryHint.cpp +Source/Sentry/Private/SentryId.cpp +Source/Sentry/Private/SentryLibrary.cpp +Source/Sentry/Private/SentryModule.cpp +Source/Sentry/Private/SentryOutputDevice.cpp +Source/Sentry/Private/SentrySamplingContext.cpp +Source/Sentry/Private/SentryScope.cpp +Source/Sentry/Private/SentrySettings.cpp +Source/Sentry/Private/SentrySpan.cpp +Source/Sentry/Private/SentrySubsystem.cpp +Source/Sentry/Private/SentryTraceSampler.cpp +Source/Sentry/Private/SentryTransaction.cpp +Source/Sentry/Private/SentryTransactionContext.cpp +Source/Sentry/Private/SentryUser.cpp +Source/Sentry/Private/SentryUserFeedback.cpp +Source/Sentry/Private/Tests/SentryBreadcrumb.spec.cpp +Source/Sentry/Private/Tests/SentryEvent.spec.cpp +Source/Sentry/Private/Tests/SentryScope.spec.cpp +Source/Sentry/Private/Tests/SentrySubsystem.spec.cpp +Source/Sentry/Private/Tests/SentryTests.h +Source/Sentry/Private/Tests/SentryUser.spec.cpp +Source/Sentry/Private/Utils/SentryFileUtils.cpp +Source/Sentry/Private/Utils/SentryFileUtils.h +Source/Sentry/Private/Utils/SentryLogUtils.cpp +Source/Sentry/Private/Utils/SentryLogUtils.h +Source/Sentry/Private/Utils/SentryScreenshotUtils.cpp +Source/Sentry/Private/Utils/SentryScreenshotUtils.h +Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.cpp +Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.h +Source/Sentry/Private/Windows/WindowsSentrySubsystem.cpp +Source/Sentry/Private/Windows/WindowsSentrySubsystem.h +Source/Sentry/Public/SentryAttachment.h +Source/Sentry/Public/SentryBeforeSendHandler.h +Source/Sentry/Public/SentryBreadcrumb.h +Source/Sentry/Public/SentryDataTypes.h +Source/Sentry/Public/SentryErrorOutputDevice.h +Source/Sentry/Public/SentryEvent.h +Source/Sentry/Public/SentryHint.h +Source/Sentry/Public/SentryId.h +Source/Sentry/Public/SentryImplWrapper.h +Source/Sentry/Public/SentryLibrary.h +Source/Sentry/Public/SentryModule.h +Source/Sentry/Public/SentryOutputDevice.h +Source/Sentry/Public/SentrySamplingContext.h +Source/Sentry/Public/SentryScope.h +Source/Sentry/Public/SentrySettings.h +Source/Sentry/Public/SentrySpan.h +Source/Sentry/Public/SentrySubsystem.h +Source/Sentry/Public/SentryTraceSampler.h +Source/Sentry/Public/SentryTransaction.h +Source/Sentry/Public/SentryTransactionContext.h +Source/Sentry/Public/SentryUser.h +Source/Sentry/Public/SentryUserFeedback.h +Source/Sentry/Sentry_Android_UPL.xml +Source/Sentry/Sentry_IOS_UPL.xml +Source/Sentry/Sentry.Build.cs +Source/SentryEditor/Private/SentryEditorModule.cpp +Source/SentryEditor/Private/SentrySettingsCustomization.cpp +Source/SentryEditor/Private/SentrySymToolsDownloader.cpp +Source/SentryEditor/Public/SentryEditorModule.h +Source/SentryEditor/Public/SentrySettingsCustomization.h +Source/SentryEditor/Public/SentrySymToolsDownloader.h +Source/SentryEditor/SentryEditor.Build.cs +Source/ThirdParty/Android/sentry-android-core-release.aar +Source/ThirdParty/Android/sentry-android-ndk-release.aar +Source/ThirdParty/Android/sentry-native-ndk-release.aar +Source/ThirdParty/Android/sentry.jar +Source/ThirdParty/CLI/sentry-cli-Darwin-universal +Source/ThirdParty/CLI/sentry-cli-Linux-x86_64 +Source/ThirdParty/CLI/sentry-cli-Windows-x86_64.exe +Source/ThirdParty/IOS/Sentry.embeddedframework.zip +Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry-Swift.h +Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryAttachment.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBaggage.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBreadcrumb.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryClient.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryCrashExceptionApplication.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugImageProvider.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugMeta.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDefines.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDsn.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEnvelopeItemHeader.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryError.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEvent.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryException.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryFrame.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryGeo.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHttpStatusCodeRange.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHub.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMeasurementUnit.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanism.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanismMeta.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMessage.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryNSError.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryOptions.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryProfilingConditionals.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryReplayApi.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryRequest.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySampleDecision.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySamplingContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryScope.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySDK.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySerializable.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanId.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanProtocol.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanStatus.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryStacktrace.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryThread.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceHeader.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTransactionContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUser.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUserFeedback.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryWithoutUIKit.h +Source/ThirdParty/IOS/Sentry.framework/Info.plist +Source/ThirdParty/IOS/Sentry.framework/Modules/module.modulemap +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.abi.json +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.private.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftdoc +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.abi.json +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.private.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftdoc +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/PrivacyInfo.xcprivacy +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivateSentrySDKOnly.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivatesHeader.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAppStartMeasurement.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAsynchronousOperation.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAutoSessionTrackingIntegration.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBaseIntegration.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBinaryImageCache.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBreadcrumb+Private.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashInstallationReporter.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportConverter.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportSink.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDateUtils.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDebugImageProvider+HybridSDKs.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDependencyContainer.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelope.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelopeItemType.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryExtraPackages.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFormatter.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFramesTracker.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryInternalSerializable.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryLog.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDataUtils.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDictionarySanitize.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+HybridSDKs.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+Private.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryRequestOperation.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryScreenFrames.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySDK+Private.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkInfo.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkPackage.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration-Hybrid.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwift.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwizzle.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryUser+Private.h +Source/ThirdParty/IOS/Sentry.framework/Sentry +Source/ThirdParty/Linux/bin/crashpad_handler +Source/ThirdParty/Linux/include/sentry.h +Source/ThirdParty/Linux/lib/libcrashpad_client.a +Source/ThirdParty/Linux/lib/libcrashpad_compat.a +Source/ThirdParty/Linux/lib/libcrashpad_handler_lib.a +Source/ThirdParty/Linux/lib/libcrashpad_minidump.a +Source/ThirdParty/Linux/lib/libcrashpad_snapshot.a +Source/ThirdParty/Linux/lib/libcrashpad_tools.a +Source/ThirdParty/Linux/lib/libcrashpad_util.a +Source/ThirdParty/Linux/lib/libmini_chromium.a +Source/ThirdParty/Linux/lib/libsentry.a +Source/ThirdParty/LinuxArm64/bin/crashpad_handler +Source/ThirdParty/LinuxArm64/include/sentry.h +Source/ThirdParty/LinuxArm64/lib/libcrashpad_client.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_compat.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_handler_lib.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_minidump.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_snapshot.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_tools.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_util.a +Source/ThirdParty/LinuxArm64/lib/libmini_chromium.a +Source/ThirdParty/LinuxArm64/lib/libsentry.a +Source/ThirdParty/Mac/bin/sentry.dylib +Source/ThirdParty/Mac/include/Sentry/PrivateSentrySDKOnly.h +Source/ThirdParty/Mac/include/Sentry/PrivatesHeader.h +Source/ThirdParty/Mac/include/Sentry/Sentry-Swift.h +Source/ThirdParty/Mac/include/Sentry/Sentry.h +Source/ThirdParty/Mac/include/Sentry/SentryAppStartMeasurement.h +Source/ThirdParty/Mac/include/Sentry/SentryAsynchronousOperation.h +Source/ThirdParty/Mac/include/Sentry/SentryAttachment.h +Source/ThirdParty/Mac/include/Sentry/SentryAutoSessionTrackingIntegration.h +Source/ThirdParty/Mac/include/Sentry/SentryBaggage.h +Source/ThirdParty/Mac/include/Sentry/SentryBaseIntegration.h +Source/ThirdParty/Mac/include/Sentry/SentryBinaryImageCache.h +Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb.h +Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb+Private.h +Source/ThirdParty/Mac/include/Sentry/SentryClient.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashExceptionApplication.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashInstallationReporter.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashReportConverter.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashReportSink.h +Source/ThirdParty/Mac/include/Sentry/SentryDateUtils.h +Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider.h +Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider+HybridSDKs.h +Source/ThirdParty/Mac/include/Sentry/SentryDebugMeta.h +Source/ThirdParty/Mac/include/Sentry/SentryDefines.h +Source/ThirdParty/Mac/include/Sentry/SentryDependencyContainer.h +Source/ThirdParty/Mac/include/Sentry/SentryDsn.h +Source/ThirdParty/Mac/include/Sentry/SentryEnvelope.h +Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemHeader.h +Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemType.h +Source/ThirdParty/Mac/include/Sentry/SentryError.h +Source/ThirdParty/Mac/include/Sentry/SentryEvent.h +Source/ThirdParty/Mac/include/Sentry/SentryException.h +Source/ThirdParty/Mac/include/Sentry/SentryExtraPackages.h +Source/ThirdParty/Mac/include/Sentry/SentryFormatter.h +Source/ThirdParty/Mac/include/Sentry/SentryFrame.h +Source/ThirdParty/Mac/include/Sentry/SentryFramesTracker.h +Source/ThirdParty/Mac/include/Sentry/SentryGeo.h +Source/ThirdParty/Mac/include/Sentry/SentryHttpStatusCodeRange.h +Source/ThirdParty/Mac/include/Sentry/SentryHub.h +Source/ThirdParty/Mac/include/Sentry/SentryInternalSerializable.h +Source/ThirdParty/Mac/include/Sentry/SentryLog.h +Source/ThirdParty/Mac/include/Sentry/SentryMeasurementUnit.h +Source/ThirdParty/Mac/include/Sentry/SentryMechanism.h +Source/ThirdParty/Mac/include/Sentry/SentryMechanismMeta.h +Source/ThirdParty/Mac/include/Sentry/SentryMessage.h +Source/ThirdParty/Mac/include/Sentry/SentryNSDataUtils.h +Source/ThirdParty/Mac/include/Sentry/SentryNSDictionarySanitize.h +Source/ThirdParty/Mac/include/Sentry/SentryNSError.h +Source/ThirdParty/Mac/include/Sentry/SentryOptions.h +Source/ThirdParty/Mac/include/Sentry/SentryOptions+HybridSDKs.h +Source/ThirdParty/Mac/include/Sentry/SentryOptions+Private.h +Source/ThirdParty/Mac/include/Sentry/SentryProfilingConditionals.h +Source/ThirdParty/Mac/include/Sentry/SentryReplayApi.h +Source/ThirdParty/Mac/include/Sentry/SentryRequest.h +Source/ThirdParty/Mac/include/Sentry/SentryRequestOperation.h +Source/ThirdParty/Mac/include/Sentry/SentrySampleDecision.h +Source/ThirdParty/Mac/include/Sentry/SentrySamplingContext.h +Source/ThirdParty/Mac/include/Sentry/SentryScope.h +Source/ThirdParty/Mac/include/Sentry/SentryScreenFrames.h +Source/ThirdParty/Mac/include/Sentry/SentrySDK.h +Source/ThirdParty/Mac/include/Sentry/SentrySDK+Private.h +Source/ThirdParty/Mac/include/Sentry/SentrySdkInfo.h +Source/ThirdParty/Mac/include/Sentry/SentrySdkPackage.h +Source/ThirdParty/Mac/include/Sentry/SentrySerializable.h +Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration-Hybrid.h +Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanContext.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanId.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanProtocol.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanStatus.h +Source/ThirdParty/Mac/include/Sentry/SentryStacktrace.h +Source/ThirdParty/Mac/include/Sentry/SentrySwift.h +Source/ThirdParty/Mac/include/Sentry/SentrySwizzle.h +Source/ThirdParty/Mac/include/Sentry/SentryThread.h +Source/ThirdParty/Mac/include/Sentry/SentryTraceContext.h +Source/ThirdParty/Mac/include/Sentry/SentryTraceHeader.h +Source/ThirdParty/Mac/include/Sentry/SentryTransactionContext.h +Source/ThirdParty/Mac/include/Sentry/SentryUser.h +Source/ThirdParty/Mac/include/Sentry/SentryUser+Private.h +Source/ThirdParty/Mac/include/Sentry/SentryUserFeedback.h +Source/ThirdParty/Mac/include/Sentry/SentryWithoutUIKit.h +Source/ThirdParty/Win64/Breakpad/include/sentry.h +Source/ThirdParty/Win64/Breakpad/lib/breakpad_client.lib +Source/ThirdParty/Win64/Breakpad/lib/sentry.lib +Source/ThirdParty/Win64/Crashpad/bin/crashpad_handler.exe +Source/ThirdParty/Win64/Crashpad/bin/crashpad_wer.dll +Source/ThirdParty/Win64/Crashpad/include/sentry.h +Source/ThirdParty/Win64/Crashpad/lib/crashpad_client.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_compat.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_getopt.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_handler_lib.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_minidump.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_snapshot.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_tools.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_util.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_zlib.lib +Source/ThirdParty/Win64/Crashpad/lib/mini_chromium.lib +Source/ThirdParty/Win64/Crashpad/lib/sentry.lib diff --git a/scripts/packaging/package-marketplace.snapshot b/scripts/packaging/package-marketplace.snapshot index f3ac7dc0c..dd6802a35 100644 --- a/scripts/packaging/package-marketplace.snapshot +++ b/scripts/packaging/package-marketplace.snapshot @@ -1,426 +1,428 @@ -CHANGELOG.md -Config/FilterPlugin.ini -Gradle/gradle-wrapper.properties -LICENSE -Resources/Icon128.png -Scripts/ -Sentry.uplugin -sentry-cli.properties -Source/Sentry/Private/Android/AndroidSentrySubsystem.cpp -Source/Sentry/Private/Android/AndroidSentrySubsystem.h -Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.cpp -Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.h -Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.cpp -Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.h -Source/Sentry/Private/Android/Infrastructure/SentryDataTypesAndroid.h -Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.cpp -Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.h -Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.cpp -Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.h -Source/Sentry/Private/Android/Java/SentryBridgeJava.java -Source/Sentry/Private/Android/Jni/SentryJniAndroid.cpp -Source/Sentry/Private/Android/SentryAttachmentAndroid.cpp -Source/Sentry/Private/Android/SentryAttachmentAndroid.h -Source/Sentry/Private/Android/SentryBreadcrumbAndroid.cpp -Source/Sentry/Private/Android/SentryBreadcrumbAndroid.h -Source/Sentry/Private/Android/SentryEventAndroid.cpp -Source/Sentry/Private/Android/SentryEventAndroid.h -Source/Sentry/Private/Android/SentryHintAndroid.cpp -Source/Sentry/Private/Android/SentryHintAndroid.h -Source/Sentry/Private/Android/SentryIdAndroid.cpp -Source/Sentry/Private/Android/SentryIdAndroid.h -Source/Sentry/Private/Android/SentryMessageAndroid.cpp -Source/Sentry/Private/Android/SentryMessageAndroid.h -Source/Sentry/Private/Android/SentrySamplingContextAndroid.cpp -Source/Sentry/Private/Android/SentrySamplingContextAndroid.h -Source/Sentry/Private/Android/SentryScopeAndroid.cpp -Source/Sentry/Private/Android/SentryScopeAndroid.h -Source/Sentry/Private/Android/SentrySpanAndroid.cpp -Source/Sentry/Private/Android/SentrySpanAndroid.h -Source/Sentry/Private/Android/SentryTransactionAndroid.cpp -Source/Sentry/Private/Android/SentryTransactionAndroid.h -Source/Sentry/Private/Android/SentryTransactionContextAndroid.cpp -Source/Sentry/Private/Android/SentryTransactionContextAndroid.h -Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.cpp -Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.h -Source/Sentry/Private/Android/SentryUserAndroid.cpp -Source/Sentry/Private/Android/SentryUserAndroid.h -Source/Sentry/Private/Android/SentryUserFeedbackAndroid.cpp -Source/Sentry/Private/Android/SentryUserFeedbackAndroid.h -Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp -Source/Sentry/Private/Apple/AppleSentrySubsystem.h -Source/Sentry/Private/Apple/Convenience/SentryInclude.h -Source/Sentry/Private/Apple/Convenience/SentryMacro.h -Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.cpp -Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.h -Source/Sentry/Private/Apple/SentryAttachmentApple.cpp -Source/Sentry/Private/Apple/SentryAttachmentApple.h -Source/Sentry/Private/Apple/SentryBreadcrumbApple.cpp -Source/Sentry/Private/Apple/SentryBreadcrumbApple.h -Source/Sentry/Private/Apple/SentryEventApple.cpp -Source/Sentry/Private/Apple/SentryEventApple.h -Source/Sentry/Private/Apple/SentryIdApple.cpp -Source/Sentry/Private/Apple/SentryIdApple.h -Source/Sentry/Private/Apple/SentrySamplingContextApple.cpp -Source/Sentry/Private/Apple/SentrySamplingContextApple.h -Source/Sentry/Private/Apple/SentryScopeApple.cpp -Source/Sentry/Private/Apple/SentryScopeApple.h -Source/Sentry/Private/Apple/SentrySpanApple.cpp -Source/Sentry/Private/Apple/SentrySpanApple.h -Source/Sentry/Private/Apple/SentryTransactionApple.cpp -Source/Sentry/Private/Apple/SentryTransactionApple.h -Source/Sentry/Private/Apple/SentryTransactionContextApple.cpp -Source/Sentry/Private/Apple/SentryTransactionContextApple.h -Source/Sentry/Private/Apple/SentryUserApple.cpp -Source/Sentry/Private/Apple/SentryUserApple.h -Source/Sentry/Private/Apple/SentryUserFeedbackApple.cpp -Source/Sentry/Private/Apple/SentryUserFeedbackApple.h -Source/Sentry/Private/GenericPlatform/Convenience/SentryInclude.h -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.cpp -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.h -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.cpp -Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.h -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.cpp -Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.h -Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.cpp -Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.h -Source/Sentry/Private/HAL/PlatformSentryAttachment.h -Source/Sentry/Private/HAL/PlatformSentryBreadcrumb.h -Source/Sentry/Private/HAL/PlatformSentryEvent.h -Source/Sentry/Private/HAL/PlatformSentryHint.h -Source/Sentry/Private/HAL/PlatformSentryId.h -Source/Sentry/Private/HAL/PlatformSentrySamplingContext.h -Source/Sentry/Private/HAL/PlatformSentryScope.h -Source/Sentry/Private/HAL/PlatformSentrySpan.h -Source/Sentry/Private/HAL/PlatformSentrySubsystem.h -Source/Sentry/Private/HAL/PlatformSentryTransaction.h -Source/Sentry/Private/HAL/PlatformSentryTransactionContext.h -Source/Sentry/Private/HAL/PlatformSentryUser.h -Source/Sentry/Private/HAL/PlatformSentryUserFeedback.h -Source/Sentry/Private/Interface/SentryAttachmentInterface.h -Source/Sentry/Private/Interface/SentryBreadcrumbInterface.h -Source/Sentry/Private/Interface/SentryEventInterface.h -Source/Sentry/Private/Interface/SentryHintInterface.h -Source/Sentry/Private/Interface/SentryIdInterface.h -Source/Sentry/Private/Interface/SentrySamplingContextInterface.h -Source/Sentry/Private/Interface/SentryScopeInterface.h -Source/Sentry/Private/Interface/SentrySpanInterface.h -Source/Sentry/Private/Interface/SentrySubsystemInterface.h -Source/Sentry/Private/Interface/SentryTransactionContextInterface.h -Source/Sentry/Private/Interface/SentryTransactionInterface.h -Source/Sentry/Private/Interface/SentryUserFeedbackInterface.h -Source/Sentry/Private/Interface/SentryUserInterface.h -Source/Sentry/Private/IOS/IOSSentrySubsystem.h -Source/Sentry/Private/Linux/LinuxSentrySubsystem.cpp -Source/Sentry/Private/Linux/LinuxSentrySubsystem.h -Source/Sentry/Private/Mac/MacSentrySubsystem.h -Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.cpp -Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.h -Source/Sentry/Private/Null/NullSentryAttachment.h -Source/Sentry/Private/Null/NullSentryHint.h -Source/Sentry/Private/Null/NullSentrySamplingContext.h -Source/Sentry/Private/SentryAttachment.cpp -Source/Sentry/Private/SentryBeforeSendHandler.cpp -Source/Sentry/Private/SentryBreadcrumb.cpp -Source/Sentry/Private/SentryDefines.h -Source/Sentry/Private/SentryErrorOutputDevice.cpp -Source/Sentry/Private/SentryEvent.cpp -Source/Sentry/Private/SentryHint.cpp -Source/Sentry/Private/SentryId.cpp -Source/Sentry/Private/SentryLibrary.cpp -Source/Sentry/Private/SentryModule.cpp -Source/Sentry/Private/SentryOutputDevice.cpp -Source/Sentry/Private/SentrySamplingContext.cpp -Source/Sentry/Private/SentryScope.cpp -Source/Sentry/Private/SentrySettings.cpp -Source/Sentry/Private/SentrySpan.cpp -Source/Sentry/Private/SentrySubsystem.cpp -Source/Sentry/Private/SentryTraceSampler.cpp -Source/Sentry/Private/SentryTransaction.cpp -Source/Sentry/Private/SentryTransactionContext.cpp -Source/Sentry/Private/SentryUser.cpp -Source/Sentry/Private/SentryUserFeedback.cpp -Source/Sentry/Private/Tests/SentryBreadcrumb.spec.cpp -Source/Sentry/Private/Tests/SentryEvent.spec.cpp -Source/Sentry/Private/Tests/SentryScope.spec.cpp -Source/Sentry/Private/Tests/SentrySubsystem.spec.cpp -Source/Sentry/Private/Tests/SentryTests.h -Source/Sentry/Private/Tests/SentryUser.spec.cpp -Source/Sentry/Private/Utils/SentryFileUtils.cpp -Source/Sentry/Private/Utils/SentryFileUtils.h -Source/Sentry/Private/Utils/SentryLogUtils.cpp -Source/Sentry/Private/Utils/SentryLogUtils.h -Source/Sentry/Private/Utils/SentryScreenshotUtils.cpp -Source/Sentry/Private/Utils/SentryScreenshotUtils.h -Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.cpp -Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.h -Source/Sentry/Private/Windows/WindowsSentrySubsystem.cpp -Source/Sentry/Private/Windows/WindowsSentrySubsystem.h -Source/Sentry/Public/SentryAttachment.h -Source/Sentry/Public/SentryBeforeSendHandler.h -Source/Sentry/Public/SentryBreadcrumb.h -Source/Sentry/Public/SentryDataTypes.h -Source/Sentry/Public/SentryErrorOutputDevice.h -Source/Sentry/Public/SentryEvent.h -Source/Sentry/Public/SentryHint.h -Source/Sentry/Public/SentryId.h -Source/Sentry/Public/SentryImplWrapper.h -Source/Sentry/Public/SentryLibrary.h -Source/Sentry/Public/SentryModule.h -Source/Sentry/Public/SentryOutputDevice.h -Source/Sentry/Public/SentrySamplingContext.h -Source/Sentry/Public/SentryScope.h -Source/Sentry/Public/SentrySettings.h -Source/Sentry/Public/SentrySpan.h -Source/Sentry/Public/SentrySubsystem.h -Source/Sentry/Public/SentryTraceSampler.h -Source/Sentry/Public/SentryTransaction.h -Source/Sentry/Public/SentryTransactionContext.h -Source/Sentry/Public/SentryUser.h -Source/Sentry/Public/SentryUserFeedback.h -Source/Sentry/Sentry.Build.cs -Source/Sentry/Sentry_Android_UPL.xml -Source/Sentry/Sentry_IOS_UPL.xml -Source/SentryEditor/Private/SentryEditorModule.cpp -Source/SentryEditor/Private/SentrySettingsCustomization.cpp -Source/SentryEditor/Private/SentrySymToolsDownloader.cpp -Source/SentryEditor/Public/SentryEditorModule.h -Source/SentryEditor/Public/SentrySettingsCustomization.h -Source/SentryEditor/Public/SentrySymToolsDownloader.h -Source/SentryEditor/SentryEditor.Build.cs -Source/ThirdParty/Android/sentry.jar -Source/ThirdParty/Android/sentry-android-core-release.aar -Source/ThirdParty/Android/sentry-android-ndk-release.aar -Source/ThirdParty/Android/sentry-native-ndk-release.aar -Source/ThirdParty/CLI/sentry-cli-Darwin-universal -Source/ThirdParty/CLI/sentry-cli-Linux-x86_64 -Source/ThirdParty/IOS/Sentry.embeddedframework.zip -Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryAttachment.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBaggage.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBreadcrumb.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryClient.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryCrashExceptionApplication.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugImageProvider.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugMeta.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDefines.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDsn.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEnvelopeItemHeader.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryError.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEvent.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryException.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryFrame.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryGeo.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHttpStatusCodeRange.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHub.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMeasurementUnit.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanism.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanismMeta.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMessage.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryNSError.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryOptions.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryProfilingConditionals.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryReplayApi.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryRequest.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySampleDecision.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySamplingContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryScope.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySDK.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySerializable.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanId.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanProtocol.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanStatus.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryStacktrace.h -Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry-Swift.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryThread.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceHeader.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTransactionContext.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUser.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUserFeedback.h -Source/ThirdParty/IOS/Sentry.framework/Headers/SentryWithoutUIKit.h -Source/ThirdParty/IOS/Sentry.framework/Info.plist -Source/ThirdParty/IOS/Sentry.framework/Modules/module.modulemap -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.abi.json -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.private.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftdoc -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.abi.json -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.private.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftdoc -Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftinterface -Source/ThirdParty/IOS/Sentry.framework/PrivacyInfo.xcprivacy -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivateSentrySDKOnly.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivatesHeader.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAppStartMeasurement.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAsynchronousOperation.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAutoSessionTrackingIntegration.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBaseIntegration.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBinaryImageCache.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBreadcrumb+Private.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashInstallationReporter.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportConverter.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportSink.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDateUtils.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDebugImageProvider+HybridSDKs.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDependencyContainer.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelope.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelopeItemType.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryExtraPackages.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFormatter.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFramesTracker.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryInternalSerializable.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryLog.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDataUtils.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDictionarySanitize.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+HybridSDKs.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+Private.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryRequestOperation.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryScreenFrames.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySDK+Private.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkInfo.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkPackage.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration-Hybrid.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwift.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwizzle.h -Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryUser+Private.h -Source/ThirdParty/IOS/Sentry.framework/Sentry -Source/ThirdParty/Linux/bin/crashpad_handler -Source/ThirdParty/Linux/include/sentry.h -Source/ThirdParty/Linux/lib/libcrashpad_client.a -Source/ThirdParty/Linux/lib/libcrashpad_compat.a -Source/ThirdParty/Linux/lib/libcrashpad_handler_lib.a -Source/ThirdParty/Linux/lib/libcrashpad_minidump.a -Source/ThirdParty/Linux/lib/libcrashpad_snapshot.a -Source/ThirdParty/Linux/lib/libcrashpad_tools.a -Source/ThirdParty/Linux/lib/libcrashpad_util.a -Source/ThirdParty/Linux/lib/libmini_chromium.a -Source/ThirdParty/Linux/lib/libsentry.a -Source/ThirdParty/LinuxArm64/bin/crashpad_handler -Source/ThirdParty/LinuxArm64/include/sentry.h -Source/ThirdParty/LinuxArm64/lib/libcrashpad_client.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_compat.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_handler_lib.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_minidump.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_snapshot.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_tools.a -Source/ThirdParty/LinuxArm64/lib/libcrashpad_util.a -Source/ThirdParty/LinuxArm64/lib/libmini_chromium.a -Source/ThirdParty/LinuxArm64/lib/libsentry.a -Source/ThirdParty/Mac/bin/sentry.dylib -Source/ThirdParty/Mac/include/Sentry/PrivateSentrySDKOnly.h -Source/ThirdParty/Mac/include/Sentry/PrivatesHeader.h -Source/ThirdParty/Mac/include/Sentry/Sentry.h -Source/ThirdParty/Mac/include/Sentry/SentryAppStartMeasurement.h -Source/ThirdParty/Mac/include/Sentry/SentryAsynchronousOperation.h -Source/ThirdParty/Mac/include/Sentry/SentryAttachment.h -Source/ThirdParty/Mac/include/Sentry/SentryAutoSessionTrackingIntegration.h -Source/ThirdParty/Mac/include/Sentry/SentryBaggage.h -Source/ThirdParty/Mac/include/Sentry/SentryBaseIntegration.h -Source/ThirdParty/Mac/include/Sentry/SentryBinaryImageCache.h -Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb.h -Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb+Private.h -Source/ThirdParty/Mac/include/Sentry/SentryClient.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashExceptionApplication.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashInstallationReporter.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashReportConverter.h -Source/ThirdParty/Mac/include/Sentry/SentryCrashReportSink.h -Source/ThirdParty/Mac/include/Sentry/SentryDateUtils.h -Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider.h -Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider+HybridSDKs.h -Source/ThirdParty/Mac/include/Sentry/SentryDebugMeta.h -Source/ThirdParty/Mac/include/Sentry/SentryDefines.h -Source/ThirdParty/Mac/include/Sentry/SentryDependencyContainer.h -Source/ThirdParty/Mac/include/Sentry/SentryDsn.h -Source/ThirdParty/Mac/include/Sentry/SentryEnvelope.h -Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemHeader.h -Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemType.h -Source/ThirdParty/Mac/include/Sentry/SentryError.h -Source/ThirdParty/Mac/include/Sentry/SentryEvent.h -Source/ThirdParty/Mac/include/Sentry/SentryException.h -Source/ThirdParty/Mac/include/Sentry/SentryExtraPackages.h -Source/ThirdParty/Mac/include/Sentry/SentryFormatter.h -Source/ThirdParty/Mac/include/Sentry/SentryFrame.h -Source/ThirdParty/Mac/include/Sentry/SentryFramesTracker.h -Source/ThirdParty/Mac/include/Sentry/SentryGeo.h -Source/ThirdParty/Mac/include/Sentry/SentryHttpStatusCodeRange.h -Source/ThirdParty/Mac/include/Sentry/SentryHub.h -Source/ThirdParty/Mac/include/Sentry/SentryInternalSerializable.h -Source/ThirdParty/Mac/include/Sentry/SentryLog.h -Source/ThirdParty/Mac/include/Sentry/SentryMeasurementUnit.h -Source/ThirdParty/Mac/include/Sentry/SentryMechanism.h -Source/ThirdParty/Mac/include/Sentry/SentryMechanismMeta.h -Source/ThirdParty/Mac/include/Sentry/SentryMessage.h -Source/ThirdParty/Mac/include/Sentry/SentryNSDataUtils.h -Source/ThirdParty/Mac/include/Sentry/SentryNSDictionarySanitize.h -Source/ThirdParty/Mac/include/Sentry/SentryNSError.h -Source/ThirdParty/Mac/include/Sentry/SentryOptions.h -Source/ThirdParty/Mac/include/Sentry/SentryOptions+HybridSDKs.h -Source/ThirdParty/Mac/include/Sentry/SentryOptions+Private.h -Source/ThirdParty/Mac/include/Sentry/SentryProfilingConditionals.h -Source/ThirdParty/Mac/include/Sentry/SentryReplayApi.h -Source/ThirdParty/Mac/include/Sentry/SentryRequest.h -Source/ThirdParty/Mac/include/Sentry/SentryRequestOperation.h -Source/ThirdParty/Mac/include/Sentry/SentrySampleDecision.h -Source/ThirdParty/Mac/include/Sentry/SentrySamplingContext.h -Source/ThirdParty/Mac/include/Sentry/SentryScope.h -Source/ThirdParty/Mac/include/Sentry/SentryScreenFrames.h -Source/ThirdParty/Mac/include/Sentry/SentrySDK.h -Source/ThirdParty/Mac/include/Sentry/SentrySDK+Private.h -Source/ThirdParty/Mac/include/Sentry/SentrySdkInfo.h -Source/ThirdParty/Mac/include/Sentry/SentrySdkPackage.h -Source/ThirdParty/Mac/include/Sentry/SentrySerializable.h -Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration.h -Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration-Hybrid.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanContext.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanId.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanProtocol.h -Source/ThirdParty/Mac/include/Sentry/SentrySpanStatus.h -Source/ThirdParty/Mac/include/Sentry/SentryStacktrace.h -Source/ThirdParty/Mac/include/Sentry/SentrySwift.h -Source/ThirdParty/Mac/include/Sentry/Sentry-Swift.h -Source/ThirdParty/Mac/include/Sentry/SentrySwizzle.h -Source/ThirdParty/Mac/include/Sentry/SentryThread.h -Source/ThirdParty/Mac/include/Sentry/SentryTraceContext.h -Source/ThirdParty/Mac/include/Sentry/SentryTraceHeader.h -Source/ThirdParty/Mac/include/Sentry/SentryTransactionContext.h -Source/ThirdParty/Mac/include/Sentry/SentryUser.h -Source/ThirdParty/Mac/include/Sentry/SentryUser+Private.h -Source/ThirdParty/Mac/include/Sentry/SentryUserFeedback.h -Source/ThirdParty/Mac/include/Sentry/SentryWithoutUIKit.h -Source/ThirdParty/Win64/Breakpad/include/sentry.h -Source/ThirdParty/Win64/Breakpad/lib/breakpad_client.lib -Source/ThirdParty/Win64/Breakpad/lib/sentry.lib -Source/ThirdParty/Win64/Crashpad/bin/ -Source/ThirdParty/Win64/Crashpad/include/sentry.h -Source/ThirdParty/Win64/Crashpad/lib/crashpad_client.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_compat.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_getopt.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_handler_lib.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_minidump.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_snapshot.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_tools.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_util.lib -Source/ThirdParty/Win64/Crashpad/lib/crashpad_zlib.lib -Source/ThirdParty/Win64/Crashpad/lib/mini_chromium.lib -Source/ThirdParty/Win64/Crashpad/lib/sentry.lib +CHANGELOG.md +Config/FilterPlugin.ini +Gradle/gradle-wrapper.properties +LICENSE +Resources/Icon128.png +Scripts/ +sentry-cli.properties +Sentry.uplugin +Source/Sentry/Private/Android/AndroidSentrySubsystem.cpp +Source/Sentry/Private/Android/AndroidSentrySubsystem.h +Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.cpp +Source/Sentry/Private/Android/Callbacks/SentryScopeCallbackAndroid.h +Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.cpp +Source/Sentry/Private/Android/Infrastructure/SentryConvertersAndroid.h +Source/Sentry/Private/Android/Infrastructure/SentryDataTypesAndroid.h +Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.cpp +Source/Sentry/Private/Android/Infrastructure/SentryJavaClasses.h +Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.cpp +Source/Sentry/Private/Android/Infrastructure/SentryJavaObjectWrapper.h +Source/Sentry/Private/Android/Java/SentryBridgeJava.java +Source/Sentry/Private/Android/Jni/SentryJniAndroid.cpp +Source/Sentry/Private/Android/SentryAttachmentAndroid.cpp +Source/Sentry/Private/Android/SentryAttachmentAndroid.h +Source/Sentry/Private/Android/SentryBreadcrumbAndroid.cpp +Source/Sentry/Private/Android/SentryBreadcrumbAndroid.h +Source/Sentry/Private/Android/SentryEventAndroid.cpp +Source/Sentry/Private/Android/SentryEventAndroid.h +Source/Sentry/Private/Android/SentryHintAndroid.cpp +Source/Sentry/Private/Android/SentryHintAndroid.h +Source/Sentry/Private/Android/SentryIdAndroid.cpp +Source/Sentry/Private/Android/SentryIdAndroid.h +Source/Sentry/Private/Android/SentryMessageAndroid.cpp +Source/Sentry/Private/Android/SentryMessageAndroid.h +Source/Sentry/Private/Android/SentrySamplingContextAndroid.cpp +Source/Sentry/Private/Android/SentrySamplingContextAndroid.h +Source/Sentry/Private/Android/SentryScopeAndroid.cpp +Source/Sentry/Private/Android/SentryScopeAndroid.h +Source/Sentry/Private/Android/SentrySpanAndroid.cpp +Source/Sentry/Private/Android/SentrySpanAndroid.h +Source/Sentry/Private/Android/SentryTransactionAndroid.cpp +Source/Sentry/Private/Android/SentryTransactionAndroid.h +Source/Sentry/Private/Android/SentryTransactionContextAndroid.cpp +Source/Sentry/Private/Android/SentryTransactionContextAndroid.h +Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.cpp +Source/Sentry/Private/Android/SentryTransactionOptionsAndroid.h +Source/Sentry/Private/Android/SentryUserAndroid.cpp +Source/Sentry/Private/Android/SentryUserAndroid.h +Source/Sentry/Private/Android/SentryUserFeedbackAndroid.cpp +Source/Sentry/Private/Android/SentryUserFeedbackAndroid.h +Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +Source/Sentry/Private/Apple/AppleSentrySubsystem.h +Source/Sentry/Private/Apple/Convenience/SentryInclude.h +Source/Sentry/Private/Apple/Convenience/SentryMacro.h +Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.cpp +Source/Sentry/Private/Apple/Infrastructure/SentryConvertersApple.h +Source/Sentry/Private/Apple/SentryAttachmentApple.cpp +Source/Sentry/Private/Apple/SentryAttachmentApple.h +Source/Sentry/Private/Apple/SentryBreadcrumbApple.cpp +Source/Sentry/Private/Apple/SentryBreadcrumbApple.h +Source/Sentry/Private/Apple/SentryEventApple.cpp +Source/Sentry/Private/Apple/SentryEventApple.h +Source/Sentry/Private/Apple/SentryIdApple.cpp +Source/Sentry/Private/Apple/SentryIdApple.h +Source/Sentry/Private/Apple/SentrySamplingContextApple.cpp +Source/Sentry/Private/Apple/SentrySamplingContextApple.h +Source/Sentry/Private/Apple/SentryScopeApple.cpp +Source/Sentry/Private/Apple/SentryScopeApple.h +Source/Sentry/Private/Apple/SentrySpanApple.cpp +Source/Sentry/Private/Apple/SentrySpanApple.h +Source/Sentry/Private/Apple/SentryTransactionApple.cpp +Source/Sentry/Private/Apple/SentryTransactionApple.h +Source/Sentry/Private/Apple/SentryTransactionContextApple.cpp +Source/Sentry/Private/Apple/SentryTransactionContextApple.h +Source/Sentry/Private/Apple/SentryUserApple.cpp +Source/Sentry/Private/Apple/SentryUserApple.h +Source/Sentry/Private/Apple/SentryUserFeedbackApple.cpp +Source/Sentry/Private/Apple/SentryUserFeedbackApple.h +Source/Sentry/Private/GenericPlatform/Convenience/SentryInclude.h +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.cpp +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashContext.h +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.cpp +Source/Sentry/Private/GenericPlatform/CrashReporter/GenericPlatformSentryCrashReporter.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryBreadcrumb.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryEvent.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryId.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryScope.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySpan.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentrySubsystem.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransaction.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryTransactionContext.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUser.h +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.cpp +Source/Sentry/Private/GenericPlatform/GenericPlatformSentryUserFeedback.h +Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.cpp +Source/Sentry/Private/GenericPlatform/Infrastructure/GenericPlatformSentryConverters.h +Source/Sentry/Private/HAL/PlatformSentryAttachment.h +Source/Sentry/Private/HAL/PlatformSentryBreadcrumb.h +Source/Sentry/Private/HAL/PlatformSentryEvent.h +Source/Sentry/Private/HAL/PlatformSentryHint.h +Source/Sentry/Private/HAL/PlatformSentryId.h +Source/Sentry/Private/HAL/PlatformSentrySamplingContext.h +Source/Sentry/Private/HAL/PlatformSentryScope.h +Source/Sentry/Private/HAL/PlatformSentrySpan.h +Source/Sentry/Private/HAL/PlatformSentrySubsystem.h +Source/Sentry/Private/HAL/PlatformSentryTransaction.h +Source/Sentry/Private/HAL/PlatformSentryTransactionContext.h +Source/Sentry/Private/HAL/PlatformSentryUser.h +Source/Sentry/Private/HAL/PlatformSentryUserFeedback.h +Source/Sentry/Private/Interface/SentryAttachmentInterface.h +Source/Sentry/Private/Interface/SentryBreadcrumbInterface.h +Source/Sentry/Private/Interface/SentryEventInterface.h +Source/Sentry/Private/Interface/SentryHintInterface.h +Source/Sentry/Private/Interface/SentryIdInterface.h +Source/Sentry/Private/Interface/SentrySamplingContextInterface.h +Source/Sentry/Private/Interface/SentryScopeInterface.h +Source/Sentry/Private/Interface/SentrySpanInterface.h +Source/Sentry/Private/Interface/SentrySubsystemInterface.h +Source/Sentry/Private/Interface/SentryTransactionContextInterface.h +Source/Sentry/Private/Interface/SentryTransactionInterface.h +Source/Sentry/Private/Interface/SentryUserFeedbackInterface.h +Source/Sentry/Private/Interface/SentryUserInterface.h +Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +Source/Sentry/Private/IOS/IOSSentrySubsystem.h +Source/Sentry/Private/Linux/LinuxSentrySubsystem.cpp +Source/Sentry/Private/Linux/LinuxSentrySubsystem.h +Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +Source/Sentry/Private/Mac/MacSentrySubsystem.h +Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.cpp +Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.h +Source/Sentry/Private/Null/NullSentryAttachment.h +Source/Sentry/Private/Null/NullSentryHint.h +Source/Sentry/Private/Null/NullSentrySamplingContext.h +Source/Sentry/Private/SentryAttachment.cpp +Source/Sentry/Private/SentryBeforeSendHandler.cpp +Source/Sentry/Private/SentryBreadcrumb.cpp +Source/Sentry/Private/SentryDefines.h +Source/Sentry/Private/SentryErrorOutputDevice.cpp +Source/Sentry/Private/SentryEvent.cpp +Source/Sentry/Private/SentryHint.cpp +Source/Sentry/Private/SentryId.cpp +Source/Sentry/Private/SentryLibrary.cpp +Source/Sentry/Private/SentryModule.cpp +Source/Sentry/Private/SentryOutputDevice.cpp +Source/Sentry/Private/SentrySamplingContext.cpp +Source/Sentry/Private/SentryScope.cpp +Source/Sentry/Private/SentrySettings.cpp +Source/Sentry/Private/SentrySpan.cpp +Source/Sentry/Private/SentrySubsystem.cpp +Source/Sentry/Private/SentryTraceSampler.cpp +Source/Sentry/Private/SentryTransaction.cpp +Source/Sentry/Private/SentryTransactionContext.cpp +Source/Sentry/Private/SentryUser.cpp +Source/Sentry/Private/SentryUserFeedback.cpp +Source/Sentry/Private/Tests/SentryBreadcrumb.spec.cpp +Source/Sentry/Private/Tests/SentryEvent.spec.cpp +Source/Sentry/Private/Tests/SentryScope.spec.cpp +Source/Sentry/Private/Tests/SentrySubsystem.spec.cpp +Source/Sentry/Private/Tests/SentryTests.h +Source/Sentry/Private/Tests/SentryUser.spec.cpp +Source/Sentry/Private/Utils/SentryFileUtils.cpp +Source/Sentry/Private/Utils/SentryFileUtils.h +Source/Sentry/Private/Utils/SentryLogUtils.cpp +Source/Sentry/Private/Utils/SentryLogUtils.h +Source/Sentry/Private/Utils/SentryScreenshotUtils.cpp +Source/Sentry/Private/Utils/SentryScreenshotUtils.h +Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.cpp +Source/Sentry/Private/Windows/Infrastructure/WindowsSentryConverters.h +Source/Sentry/Private/Windows/WindowsSentrySubsystem.cpp +Source/Sentry/Private/Windows/WindowsSentrySubsystem.h +Source/Sentry/Public/SentryAttachment.h +Source/Sentry/Public/SentryBeforeSendHandler.h +Source/Sentry/Public/SentryBreadcrumb.h +Source/Sentry/Public/SentryDataTypes.h +Source/Sentry/Public/SentryErrorOutputDevice.h +Source/Sentry/Public/SentryEvent.h +Source/Sentry/Public/SentryHint.h +Source/Sentry/Public/SentryId.h +Source/Sentry/Public/SentryImplWrapper.h +Source/Sentry/Public/SentryLibrary.h +Source/Sentry/Public/SentryModule.h +Source/Sentry/Public/SentryOutputDevice.h +Source/Sentry/Public/SentrySamplingContext.h +Source/Sentry/Public/SentryScope.h +Source/Sentry/Public/SentrySettings.h +Source/Sentry/Public/SentrySpan.h +Source/Sentry/Public/SentrySubsystem.h +Source/Sentry/Public/SentryTraceSampler.h +Source/Sentry/Public/SentryTransaction.h +Source/Sentry/Public/SentryTransactionContext.h +Source/Sentry/Public/SentryUser.h +Source/Sentry/Public/SentryUserFeedback.h +Source/Sentry/Sentry_Android_UPL.xml +Source/Sentry/Sentry_IOS_UPL.xml +Source/Sentry/Sentry.Build.cs +Source/SentryEditor/Private/SentryEditorModule.cpp +Source/SentryEditor/Private/SentrySettingsCustomization.cpp +Source/SentryEditor/Private/SentrySymToolsDownloader.cpp +Source/SentryEditor/Public/SentryEditorModule.h +Source/SentryEditor/Public/SentrySettingsCustomization.h +Source/SentryEditor/Public/SentrySymToolsDownloader.h +Source/SentryEditor/SentryEditor.Build.cs +Source/ThirdParty/Android/sentry-android-core-release.aar +Source/ThirdParty/Android/sentry-android-ndk-release.aar +Source/ThirdParty/Android/sentry-native-ndk-release.aar +Source/ThirdParty/Android/sentry.jar +Source/ThirdParty/CLI/sentry-cli-Darwin-universal +Source/ThirdParty/CLI/sentry-cli-Linux-x86_64 +Source/ThirdParty/IOS/Sentry.embeddedframework.zip +Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry-Swift.h +Source/ThirdParty/IOS/Sentry.framework/Headers/Sentry.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryAttachment.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBaggage.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryBreadcrumb.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryClient.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryCrashExceptionApplication.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugImageProvider.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDebugMeta.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDefines.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryDsn.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEnvelopeItemHeader.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryError.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryEvent.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryException.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryFrame.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryGeo.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHttpStatusCodeRange.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryHub.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMeasurementUnit.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanism.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMechanismMeta.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryMessage.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryNSError.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryOptions.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryProfilingConditionals.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryReplayApi.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryRequest.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySampleDecision.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySamplingContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryScope.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySDK.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySerializable.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanId.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanProtocol.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentrySpanStatus.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryStacktrace.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryThread.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTraceHeader.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryTransactionContext.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUser.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryUserFeedback.h +Source/ThirdParty/IOS/Sentry.framework/Headers/SentryWithoutUIKit.h +Source/ThirdParty/IOS/Sentry.framework/Info.plist +Source/ThirdParty/IOS/Sentry.framework/Modules/module.modulemap +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.abi.json +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.private.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftdoc +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64-apple-ios.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.abi.json +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.private.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftdoc +Source/ThirdParty/IOS/Sentry.framework/Modules/Sentry.swiftmodule/arm64e-apple-ios.swiftinterface +Source/ThirdParty/IOS/Sentry.framework/PrivacyInfo.xcprivacy +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivateSentrySDKOnly.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/PrivatesHeader.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAppStartMeasurement.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAsynchronousOperation.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryAutoSessionTrackingIntegration.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBaseIntegration.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBinaryImageCache.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryBreadcrumb+Private.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashInstallationReporter.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportConverter.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryCrashReportSink.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDateUtils.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDebugImageProvider+HybridSDKs.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryDependencyContainer.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelope.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryEnvelopeItemType.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryExtraPackages.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFormatter.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryFramesTracker.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryInternalSerializable.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryLog.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDataUtils.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryNSDictionarySanitize.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+HybridSDKs.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryOptions+Private.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryRequestOperation.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryScreenFrames.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySDK+Private.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkInfo.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySdkPackage.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration-Hybrid.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySessionReplayIntegration.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwift.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentrySwizzle.h +Source/ThirdParty/IOS/Sentry.framework/PrivateHeaders/SentryUser+Private.h +Source/ThirdParty/IOS/Sentry.framework/Sentry +Source/ThirdParty/Linux/bin/crashpad_handler +Source/ThirdParty/Linux/include/sentry.h +Source/ThirdParty/Linux/lib/libcrashpad_client.a +Source/ThirdParty/Linux/lib/libcrashpad_compat.a +Source/ThirdParty/Linux/lib/libcrashpad_handler_lib.a +Source/ThirdParty/Linux/lib/libcrashpad_minidump.a +Source/ThirdParty/Linux/lib/libcrashpad_snapshot.a +Source/ThirdParty/Linux/lib/libcrashpad_tools.a +Source/ThirdParty/Linux/lib/libcrashpad_util.a +Source/ThirdParty/Linux/lib/libmini_chromium.a +Source/ThirdParty/Linux/lib/libsentry.a +Source/ThirdParty/LinuxArm64/bin/crashpad_handler +Source/ThirdParty/LinuxArm64/include/sentry.h +Source/ThirdParty/LinuxArm64/lib/libcrashpad_client.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_compat.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_handler_lib.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_minidump.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_snapshot.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_tools.a +Source/ThirdParty/LinuxArm64/lib/libcrashpad_util.a +Source/ThirdParty/LinuxArm64/lib/libmini_chromium.a +Source/ThirdParty/LinuxArm64/lib/libsentry.a +Source/ThirdParty/Mac/bin/sentry.dylib +Source/ThirdParty/Mac/include/Sentry/PrivateSentrySDKOnly.h +Source/ThirdParty/Mac/include/Sentry/PrivatesHeader.h +Source/ThirdParty/Mac/include/Sentry/Sentry-Swift.h +Source/ThirdParty/Mac/include/Sentry/Sentry.h +Source/ThirdParty/Mac/include/Sentry/SentryAppStartMeasurement.h +Source/ThirdParty/Mac/include/Sentry/SentryAsynchronousOperation.h +Source/ThirdParty/Mac/include/Sentry/SentryAttachment.h +Source/ThirdParty/Mac/include/Sentry/SentryAutoSessionTrackingIntegration.h +Source/ThirdParty/Mac/include/Sentry/SentryBaggage.h +Source/ThirdParty/Mac/include/Sentry/SentryBaseIntegration.h +Source/ThirdParty/Mac/include/Sentry/SentryBinaryImageCache.h +Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb.h +Source/ThirdParty/Mac/include/Sentry/SentryBreadcrumb+Private.h +Source/ThirdParty/Mac/include/Sentry/SentryClient.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashExceptionApplication.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashInstallationReporter.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashReportConverter.h +Source/ThirdParty/Mac/include/Sentry/SentryCrashReportSink.h +Source/ThirdParty/Mac/include/Sentry/SentryDateUtils.h +Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider.h +Source/ThirdParty/Mac/include/Sentry/SentryDebugImageProvider+HybridSDKs.h +Source/ThirdParty/Mac/include/Sentry/SentryDebugMeta.h +Source/ThirdParty/Mac/include/Sentry/SentryDefines.h +Source/ThirdParty/Mac/include/Sentry/SentryDependencyContainer.h +Source/ThirdParty/Mac/include/Sentry/SentryDsn.h +Source/ThirdParty/Mac/include/Sentry/SentryEnvelope.h +Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemHeader.h +Source/ThirdParty/Mac/include/Sentry/SentryEnvelopeItemType.h +Source/ThirdParty/Mac/include/Sentry/SentryError.h +Source/ThirdParty/Mac/include/Sentry/SentryEvent.h +Source/ThirdParty/Mac/include/Sentry/SentryException.h +Source/ThirdParty/Mac/include/Sentry/SentryExtraPackages.h +Source/ThirdParty/Mac/include/Sentry/SentryFormatter.h +Source/ThirdParty/Mac/include/Sentry/SentryFrame.h +Source/ThirdParty/Mac/include/Sentry/SentryFramesTracker.h +Source/ThirdParty/Mac/include/Sentry/SentryGeo.h +Source/ThirdParty/Mac/include/Sentry/SentryHttpStatusCodeRange.h +Source/ThirdParty/Mac/include/Sentry/SentryHub.h +Source/ThirdParty/Mac/include/Sentry/SentryInternalSerializable.h +Source/ThirdParty/Mac/include/Sentry/SentryLog.h +Source/ThirdParty/Mac/include/Sentry/SentryMeasurementUnit.h +Source/ThirdParty/Mac/include/Sentry/SentryMechanism.h +Source/ThirdParty/Mac/include/Sentry/SentryMechanismMeta.h +Source/ThirdParty/Mac/include/Sentry/SentryMessage.h +Source/ThirdParty/Mac/include/Sentry/SentryNSDataUtils.h +Source/ThirdParty/Mac/include/Sentry/SentryNSDictionarySanitize.h +Source/ThirdParty/Mac/include/Sentry/SentryNSError.h +Source/ThirdParty/Mac/include/Sentry/SentryOptions.h +Source/ThirdParty/Mac/include/Sentry/SentryOptions+HybridSDKs.h +Source/ThirdParty/Mac/include/Sentry/SentryOptions+Private.h +Source/ThirdParty/Mac/include/Sentry/SentryProfilingConditionals.h +Source/ThirdParty/Mac/include/Sentry/SentryReplayApi.h +Source/ThirdParty/Mac/include/Sentry/SentryRequest.h +Source/ThirdParty/Mac/include/Sentry/SentryRequestOperation.h +Source/ThirdParty/Mac/include/Sentry/SentrySampleDecision.h +Source/ThirdParty/Mac/include/Sentry/SentrySamplingContext.h +Source/ThirdParty/Mac/include/Sentry/SentryScope.h +Source/ThirdParty/Mac/include/Sentry/SentryScreenFrames.h +Source/ThirdParty/Mac/include/Sentry/SentrySDK.h +Source/ThirdParty/Mac/include/Sentry/SentrySDK+Private.h +Source/ThirdParty/Mac/include/Sentry/SentrySdkInfo.h +Source/ThirdParty/Mac/include/Sentry/SentrySdkPackage.h +Source/ThirdParty/Mac/include/Sentry/SentrySerializable.h +Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration-Hybrid.h +Source/ThirdParty/Mac/include/Sentry/SentrySessionReplayIntegration.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanContext.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanId.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanProtocol.h +Source/ThirdParty/Mac/include/Sentry/SentrySpanStatus.h +Source/ThirdParty/Mac/include/Sentry/SentryStacktrace.h +Source/ThirdParty/Mac/include/Sentry/SentrySwift.h +Source/ThirdParty/Mac/include/Sentry/SentrySwizzle.h +Source/ThirdParty/Mac/include/Sentry/SentryThread.h +Source/ThirdParty/Mac/include/Sentry/SentryTraceContext.h +Source/ThirdParty/Mac/include/Sentry/SentryTraceHeader.h +Source/ThirdParty/Mac/include/Sentry/SentryTransactionContext.h +Source/ThirdParty/Mac/include/Sentry/SentryUser.h +Source/ThirdParty/Mac/include/Sentry/SentryUser+Private.h +Source/ThirdParty/Mac/include/Sentry/SentryUserFeedback.h +Source/ThirdParty/Mac/include/Sentry/SentryWithoutUIKit.h +Source/ThirdParty/Win64/Breakpad/include/sentry.h +Source/ThirdParty/Win64/Breakpad/lib/breakpad_client.lib +Source/ThirdParty/Win64/Breakpad/lib/sentry.lib +Source/ThirdParty/Win64/Crashpad/bin/ +Source/ThirdParty/Win64/Crashpad/include/sentry.h +Source/ThirdParty/Win64/Crashpad/lib/crashpad_client.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_compat.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_getopt.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_handler_lib.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_minidump.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_snapshot.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_tools.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_util.lib +Source/ThirdParty/Win64/Crashpad/lib/crashpad_zlib.lib +Source/ThirdParty/Win64/Crashpad/lib/mini_chromium.lib +Source/ThirdParty/Win64/Crashpad/lib/sentry.lib From 0d9deaf5cc02bc8114dafe9d826c7d3655d30655 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Thu, 10 Apr 2025 13:51:45 +0300 Subject: [PATCH 04/18] Update snapshot --- scripts/packaging/package-github.snapshot | 2 ++ scripts/packaging/package-marketplace.snapshot | 2 ++ 2 files changed, 4 insertions(+) diff --git a/scripts/packaging/package-github.snapshot b/scripts/packaging/package-github.snapshot index e92cac5c8..2d8a0ed97 100644 --- a/scripts/packaging/package-github.snapshot +++ b/scripts/packaging/package-github.snapshot @@ -129,9 +129,11 @@ Source/Sentry/Private/Interface/SentryTransactionContextInterface.h Source/Sentry/Private/Interface/SentryTransactionInterface.h Source/Sentry/Private/Interface/SentryUserFeedbackInterface.h Source/Sentry/Private/Interface/SentryUserInterface.h +Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp Source/Sentry/Private/IOS/IOSSentrySubsystem.h Source/Sentry/Private/Linux/LinuxSentrySubsystem.cpp Source/Sentry/Private/Linux/LinuxSentrySubsystem.h +Source/Sentry/Private/Mac/MacSentrySubsystem.cpp Source/Sentry/Private/Mac/MacSentrySubsystem.h Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.cpp Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.h diff --git a/scripts/packaging/package-marketplace.snapshot b/scripts/packaging/package-marketplace.snapshot index 5a8ede319..4b924b855 100644 --- a/scripts/packaging/package-marketplace.snapshot +++ b/scripts/packaging/package-marketplace.snapshot @@ -128,9 +128,11 @@ Source/Sentry/Private/Interface/SentryTransactionContextInterface.h Source/Sentry/Private/Interface/SentryTransactionInterface.h Source/Sentry/Private/Interface/SentryUserFeedbackInterface.h Source/Sentry/Private/Interface/SentryUserInterface.h +Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp Source/Sentry/Private/IOS/IOSSentrySubsystem.h Source/Sentry/Private/Linux/LinuxSentrySubsystem.cpp Source/Sentry/Private/Linux/LinuxSentrySubsystem.h +Source/Sentry/Private/Mac/MacSentrySubsystem.cpp Source/Sentry/Private/Mac/MacSentrySubsystem.h Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.cpp Source/Sentry/Private/Microsoft/MicrosoftSentrySubsystem.h From 86df57242d22ab85d1ccf27a1efe50b8616aca69 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Fri, 11 Apr 2025 09:49:45 +0300 Subject: [PATCH 05/18] FIx init params --- plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp | 4 ++-- plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h | 1 + plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp | 4 ++-- plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp index 2db2d3799..427c1593c 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp @@ -9,10 +9,10 @@ #include "Misc/FileHelper.h" #include "Misc/Paths.h" -void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, +void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler) { - FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, TraceSampler); + FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler); } void FIOSSentrySubsystem::TryCaptureScreenshot() const diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h index f04bc2ea7..b457226fe 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h @@ -8,6 +8,7 @@ class FIOSSentrySubsystem : public FAppleSentrySubsystem virtual void InitWithSettings( const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, + USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler ) override; diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index c83b4793a..6639a57f2 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -7,10 +7,10 @@ #include "Misc/FileHelper.h" #include "Misc/Paths.h" -void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, +void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler) { - FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, TraceSampler); + FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler); if (Settings->AttachScreenshot) { diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h index 7a28965fb..d196da948 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h @@ -8,6 +8,7 @@ class FMacSentrySubsystem : public FAppleSentrySubsystem virtual void InitWithSettings( const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, + USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler ) override; From 0d122859ff62947d84fa52b4b66a0ca9207128cd Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Fri, 11 Apr 2025 10:23:48 +0300 Subject: [PATCH 06/18] Add screenshot attachment for crashes via envelope --- .../Private/Apple/AppleSentrySubsystem.cpp | 19 +++++++++++-------- .../Private/Apple/Convenience/SentryInclude.h | 2 ++ plugin-dev/Source/Sentry/Sentry.Build.cs | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index 90088ba89..d3a5e0f0e 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -70,17 +70,20 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US SentryAttachment* logAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:logFilePath.GetNSString()]; [scope addAttachment:logAttachment]; } - if (settings->AttachScreenshot) { - const FString screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*GetScreenshotPath()); - SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; - [scope addAttachment:screenshotAttachment]; - } return scope; }; options.onCrashedLastRun = ^(SentryEvent* event) { - [SENTRY_APPLE_CLASS(SentrySDK) configureScope:^(SentryScope* scope) { - [scope clearAttachments]; - }]; + if (settings->AttachScreenshot) + { + const FString& screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*GetScreenshotPath()); + SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; + + SentryEnvelopeItem* envelopeItem = [[SENTRY_APPLE_CLASS(SentryEnvelopeItem) alloc] initWithAttachment:screenshotAttachment maxAttachmentSize:options.maxAttachmentSize]; + + SentryEnvelope* envelope = [[SENTRY_APPLE_CLASS(SentryEnvelope) alloc] initWithId:event.eventId singleItem:envelopeItem]; + + [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; + } }; options.beforeSend = ^SentryEvent* (SentryEvent* event) { if (FUObjectThreadContext::Get().IsRoutingPostLoad) diff --git a/plugin-dev/Source/Sentry/Private/Apple/Convenience/SentryInclude.h b/plugin-dev/Source/Sentry/Private/Apple/Convenience/SentryInclude.h index 3812b4a2b..f08d38445 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/Convenience/SentryInclude.h +++ b/plugin-dev/Source/Sentry/Private/Apple/Convenience/SentryInclude.h @@ -10,10 +10,12 @@ #if PLATFORM_MAC #include +#include #include #include #elif PLATFORM_IOS #import +#import #import #import #endif \ No newline at end of file diff --git a/plugin-dev/Source/Sentry/Sentry.Build.cs b/plugin-dev/Source/Sentry/Sentry.Build.cs index 7028c326d..7fb31669d 100644 --- a/plugin-dev/Source/Sentry/Sentry.Build.cs +++ b/plugin-dev/Source/Sentry/Sentry.Build.cs @@ -58,7 +58,7 @@ public Sentry(ReadOnlyTargetRules Target) : base(Target) PublicDefinitions.Add("USE_SENTRY_NATIVE=0"); PublicDefinitions.Add("COCOAPODS=0"); - PublicDefinitions.Add("SENTRY_NO_UIKIT=1"); + PublicDefinitions.Add("SENTRY_NO_UIKIT=0"); PublicDefinitions.Add("APPLICATION_EXTENSION_API_ONLY_NO=0"); } else if (Target.Platform == UnrealTargetPlatform.Mac) From 40eb0bf3b98088eb2144d644a8cd26118fe26998 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Fri, 11 Apr 2025 10:24:51 +0300 Subject: [PATCH 07/18] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44e95f91a..9ca7e7155 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Add screenshot capturing for Mac/iOS ([#849](https://github.com/getsentry/sentry-unreal/pull/849)) + ### Dependencies - Bump Java SDK (Android) from v8.6.0 to v8.7.0 ([#863](https://github.com/getsentry/sentry-unreal/pull/863)) From a6bf79c8cf9c4bc1b563eb9be006b07afd16e19c Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Mon, 14 Apr 2025 13:58:23 +0300 Subject: [PATCH 08/18] Add screenshot for ensures on Mac --- .../Private/Apple/AppleSentrySubsystem.cpp | 27 +++++++++++++------ .../Private/Apple/AppleSentrySubsystem.h | 2 ++ .../Sentry/Private/Mac/MacSentrySubsystem.cpp | 17 ++++++++++++ .../Sentry/Private/Mac/MacSentrySubsystem.h | 2 ++ .../Source/Sentry/Private/SentrySettings.cpp | 1 + .../Source/Sentry/Public/SentrySettings.h | 4 +++ 6 files changed, 45 insertions(+), 8 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index d3a5e0f0e..99cb2129b 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -61,6 +61,7 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US options.sampleRate = [NSNumber numberWithFloat:settings->SampleRate]; options.maxBreadcrumbs = settings->MaxBreadcrumbs; options.sendDefaultPii = settings->SendDefaultPii; + options.maxAttachmentSize = settings->MaxAttachmentSize; #if SENTRY_UIKIT_AVAILABLE options.attachScreenshot = settings->AttachScreenshot; #endif @@ -75,14 +76,7 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US options.onCrashedLastRun = ^(SentryEvent* event) { if (settings->AttachScreenshot) { - const FString& screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*GetScreenshotPath()); - SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; - - SentryEnvelopeItem* envelopeItem = [[SENTRY_APPLE_CLASS(SentryEnvelopeItem) alloc] initWithAttachment:screenshotAttachment maxAttachmentSize:options.maxAttachmentSize]; - - SentryEnvelope* envelope = [[SENTRY_APPLE_CLASS(SentryEnvelope) alloc] initWithId:event.eventId singleItem:envelopeItem]; - - [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; + //UploadScreenshotForEvent(MakeShareable(new SentryIdApple(event.eventId))); } }; options.beforeSend = ^SentryEvent* (SentryEvent* event) { @@ -386,3 +380,20 @@ TSharedPtr FAppleSentrySubsystem::ContinueTrace(const return MakeShareable(new SentryTransactionContextApple(transactionContext)); } + +void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr eventId) const +{ + SentryId* id = StaticCastSharedPtr(eventId)->GetNativeObject(); + + const FString& screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*GetScreenshotPath()); + SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; + + SentryOptions* options = [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) options]; + int32 size = options.maxAttachmentSize; + + SentryEnvelopeItem* envelopeItem = [[SENTRY_APPLE_CLASS(SentryEnvelopeItem) alloc] initWithAttachment:screenshotAttachment maxAttachmentSize:size]; + + SentryEnvelope* envelope = [[SENTRY_APPLE_CLASS(SentryEnvelope) alloc] initWithId:id singleItem:envelopeItem]; + + [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; +} diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h index 4a22a87e7..8d370ac2d 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h @@ -37,6 +37,8 @@ class FAppleSentrySubsystem : public ISentrySubsystem virtual void TryCaptureScreenshot() const {}; + virtual void UploadScreenshotForEvent(TSharedPtr eventId) const; + protected: virtual FString GetScreenshotPath() const { return FString(); } }; diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index 6639a57f2..eea6b93b0 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -1,6 +1,9 @@ #include "Mac/MacSentrySubsystem.h" +#include "SentryIdApple.h" + #include "SentryDefines.h" +#include "SentryModule.h" #include "SentrySettings.h" #include "Misc/CoreDelegates.h" @@ -21,6 +24,20 @@ void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USen } } +TSharedPtr FMacSentrySubsystem::CaptureEnsure(const FString& type, const FString& message) +{ + TSharedPtr id = FAppleSentrySubsystem::CaptureEnsure(type, message); + + const USentrySettings* Settings = FSentryModule::Get().GetSettings(); + if (Settings->AttachScreenshot) + { + TryCaptureScreenshot(); + UploadScreenshotForEvent(id); + } + + return id; +} + void FMacSentrySubsystem::TryCaptureScreenshot() const { NSWindow* MainWindow = [NSApp mainWindow]; diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h index d196da948..dcc121cb4 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h @@ -12,6 +12,8 @@ class FMacSentrySubsystem : public FAppleSentrySubsystem USentryTraceSampler* TraceSampler ) override; + virtual TSharedPtr CaptureEnsure(const FString& type, const FString& message) override; + virtual void TryCaptureScreenshot() const override; protected: diff --git a/plugin-dev/Source/Sentry/Private/SentrySettings.cpp b/plugin-dev/Source/Sentry/Private/SentrySettings.cpp index 19a0c66d9..c80cdeb0a 100644 --- a/plugin-dev/Source/Sentry/Private/SentrySettings.cpp +++ b/plugin-dev/Source/Sentry/Private/SentrySettings.cpp @@ -22,6 +22,7 @@ USentrySettings::USentrySettings(const FObjectInitializer& ObjectInitializer) , SendDefaultPii(false) , AttachScreenshot(false) , AttachGpuDump(true) + , MaxAttachmentSize(20 * 1024 * 1024) , MaxBreadcrumbs(100) , EnableAutoSessionTracking(true) , SessionTimeout(30000) diff --git a/plugin-dev/Source/Sentry/Public/SentrySettings.h b/plugin-dev/Source/Sentry/Public/SentrySettings.h index 074d57245..a5af4fd3d 100644 --- a/plugin-dev/Source/Sentry/Public/SentrySettings.h +++ b/plugin-dev/Source/Sentry/Public/SentrySettings.h @@ -225,6 +225,10 @@ class SENTRY_API USentrySettings : public UObject Meta = (DisplayName = "Attach GPU dump", ToolTip = "Flag indicating whether to attach GPU crash dump when an error occurs. Currently this feature is supported for Nvidia graphics only.")) bool AttachGpuDump; + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "General|Attachments", + Meta = (DisplayName = "Max attachment size in bytes", Tooltip = "Max attachment size for each attachment in bytes. Default is 20 MiB. Please also check the maximum attachment size of Relay to make sure your attachments don't get discarded there: https://docs.sentry.io/product/relay/options/")) + int32 MaxAttachmentSize; + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "General|Breadcrumbs", Meta = (DisplayName = "Max breadcrumbs", Tooltip = "Total amount of breadcrumbs that should be captured.")) int32 MaxBreadcrumbs; From ba2cb4ea8381a6b300ba7ee81414686d33df4e06 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Mon, 14 Apr 2025 15:25:52 +0300 Subject: [PATCH 09/18] Add screenshot backup --- .../Private/Apple/AppleSentrySubsystem.cpp | 23 ++++++++++++++++++- .../Private/Apple/AppleSentrySubsystem.h | 5 ++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index 99cb2129b..aaacc4c1f 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -76,7 +76,7 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US options.onCrashedLastRun = ^(SentryEvent* event) { if (settings->AttachScreenshot) { - //UploadScreenshotForEvent(MakeShareable(new SentryIdApple(event.eventId))); + UploadScreenshotForEvent(MakeShareable(new SentryIdApple(event.eventId))); } }; options.beforeSend = ^SentryEvent* (SentryEvent* event) { @@ -396,4 +396,25 @@ void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr event SentryEnvelope* envelope = [[SENTRY_APPLE_CLASS(SentryEnvelope) alloc] initWithId:id singleItem:envelopeItem]; [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; + + // After uploading screenshot create its timestamped backup + CreateScreenshotBackup(); +} + +void FAppleSentrySubsystem::CreateScreenshotBackup() const +{ + const FString& screenshotFilePath = GetScreenshotPath(); + + IFileManager& fileManager = IFileManager::Get(); + if (fileManager.FileExists(*screenshotFilePath)) + { + FString name, extension; + FString(screenshotFilePath).Split(TEXT("."), &name, &extension, ESearchCase::CaseSensitive, ESearchDir::FromEnd); + FDateTime originalTime = fileManager.GetTimeStamp(*screenshotFilePath); + FString backupFilePath = FString::Printf(TEXT("%s%s%s.%s"), *name, TEXT("-backup-"), *originalTime.ToString(), *extension); + if (!fileManager.Move(*backupFilePath, *screenshotFilePath, true)) + { + UE_LOG(LogSentrySdk, Error, TEXT("Failed to backup screenshot.")); + } + } } diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h index 8d370ac2d..b71412e9a 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h @@ -37,8 +37,9 @@ class FAppleSentrySubsystem : public ISentrySubsystem virtual void TryCaptureScreenshot() const {}; - virtual void UploadScreenshotForEvent(TSharedPtr eventId) const; - protected: + void UploadScreenshotForEvent(TSharedPtr eventId) const; + void CreateScreenshotBackup() const; + virtual FString GetScreenshotPath() const { return FString(); } }; From 5c2694dd9594940636ff908a3a4964a35e0a9a78 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Mon, 14 Apr 2025 16:06:05 +0300 Subject: [PATCH 10/18] Fix module getter that could cause ensure --- plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp | 5 +++-- plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index eea6b93b0..7d0e67c9f 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -15,6 +15,8 @@ void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USen { FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler); + isScreenshotAttachmentEnabled = Settings->AttachScreenshot; + if (Settings->AttachScreenshot) { FCoreDelegates::OnHandleSystemError.AddLambda([this]() @@ -28,8 +30,7 @@ TSharedPtr FMacSentrySubsystem::CaptureEnsure(const FString& type, co { TSharedPtr id = FAppleSentrySubsystem::CaptureEnsure(type, message); - const USentrySettings* Settings = FSentryModule::Get().GetSettings(); - if (Settings->AttachScreenshot) + if (isScreenshotAttachmentEnabled) { TryCaptureScreenshot(); UploadScreenshotForEvent(id); diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h index dcc121cb4..c926cdd44 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h @@ -18,6 +18,9 @@ class FMacSentrySubsystem : public FAppleSentrySubsystem protected: virtual FString GetScreenshotPath() const override; + +private: + bool isScreenshotAttachmentEnabled = false; }; typedef FMacSentrySubsystem FPlatformSentrySubsystem; From 1716702efacc60b83d29789e6f328fd65eb70434 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Mon, 14 Apr 2025 16:06:26 +0300 Subject: [PATCH 11/18] Add check if screenshot exists --- .../Private/Apple/AppleSentrySubsystem.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index aaacc4c1f..142e83556 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -383,16 +383,26 @@ TSharedPtr FAppleSentrySubsystem::ContinueTrace(const void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr eventId) const { - SentryId* id = StaticCastSharedPtr(eventId)->GetNativeObject(); + const FString& screenshotFilePath = GetScreenshotPath(); - const FString& screenshotFilePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*GetScreenshotPath()); - SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePath.GetNSString()]; + IFileManager& fileManager = IFileManager::Get(); + if (!fileManager.FileExists(*screenshotFilePath)) + { + UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot.")); + return; + } + + const FString& screenshotFilePathExt = fileManager.ConvertToAbsolutePathForExternalAppForRead(*screenshotFilePath); + + SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePathExt.GetNSString()]; SentryOptions* options = [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) options]; int32 size = options.maxAttachmentSize; SentryEnvelopeItem* envelopeItem = [[SENTRY_APPLE_CLASS(SentryEnvelopeItem) alloc] initWithAttachment:screenshotAttachment maxAttachmentSize:size]; + SentryId* id = StaticCastSharedPtr(eventId)->GetNativeObject(); + SentryEnvelope* envelope = [[SENTRY_APPLE_CLASS(SentryEnvelope) alloc] initWithId:id singleItem:envelopeItem]; [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; From 4f21912111a7da1b9ed394e57c482e9cefbedf27 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Tue, 15 Apr 2025 12:25:47 +0300 Subject: [PATCH 12/18] Add custom signal handler to capture screenshots on crash (iOS) --- .../Sentry/Private/IOS/IOSSentrySubsystem.cpp | 65 ++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp index 427c1593c..58e977fe8 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp @@ -8,10 +8,73 @@ #include "Misc/CoreDelegates.h" #include "Misc/FileHelper.h" #include "Misc/Paths.h" +#include "Utils/SentryScreenshotUtils.h" + +static FIOSSentrySubsystem* GIOSSentrySubsystem = nullptr; + +struct sigaction DefaultSigIllHandler; +struct sigaction DefaultSigEmtHandler; +struct sigaction DefaultSigFpeHandler; +struct sigaction DefaultSigBusHandler; +struct sigaction DefaultSigSegvHandler; +struct sigaction DefaultSigSysHandler; + +void SaveDefaultSignalHandlers() +{ + sigaction(SIGILL, NULL, &DefaultSigIllHandler); + sigaction(SIGEMT, NULL, &DefaultSigEmtHandler); + sigaction(SIGFPE, NULL, &DefaultSigFpeHandler); + sigaction(SIGBUS, NULL, &DefaultSigBusHandler); + sigaction(SIGSEGV, NULL, &DefaultSigSegvHandler); + sigaction(SIGSYS, NULL, &DefaultSigSysHandler); +} + +void RestoreDefaultSignalHandlers() +{ + sigaction(SIGILL, &DefaultSigIllHandler, NULL); + sigaction(SIGEMT, &DefaultSigEmtHandler, NULL); + sigaction(SIGFPE, &DefaultSigFpeHandler, NULL); + sigaction(SIGBUS, &DefaultSigBusHandler, NULL); + sigaction(SIGSEGV, &DefaultSigSegvHandler, NULL); + sigaction(SIGSYS, &DefaultSigSysHandler, NULL); +} + +static void IOSSentrySignalHandler(int Signal, siginfo_t *Info, void *Context) +{ + if (GIOSSentrySubsystem && GIOSSentrySubsystem->IsEnabled()) + { + GIOSSentrySubsystem->TryCaptureScreenshot(); + } + + RestoreDefaultSignalHandlers(); + + // Re-raise signal to default handler + raise(Signal); +} + +void InstallSentrySignalHandler() +{ + struct sigaction Action; + memset(&Action, 0, sizeof(Action)); + Action.sa_sigaction = IOSSentrySignalHandler; + Action.sa_flags = SA_SIGINFO | SA_ONSTACK; + + sigaction(SIGILL, &Action, NULL); + sigaction(SIGEMT, &Action, NULL); + sigaction(SIGFPE, &Action, NULL); + sigaction(SIGBUS, &Action, NULL); + sigaction(SIGSEGV, &Action, NULL); + sigaction(SIGSYS, &Action, NULL); +} void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler) { + GIOSSentrySubsystem = this; + + SaveDefaultSignalHandlers(); + InstallSentrySignalHandler(); + FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler); } @@ -38,7 +101,7 @@ void FIOSSentrySubsystem::TryCaptureScreenshot() const } else { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot.")); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *FilePath); } }); } From 0d2f4e932988ee9c1a37ff34a6c283bdd838d5f3 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Tue, 15 Apr 2025 14:28:18 +0300 Subject: [PATCH 13/18] Update logging --- .../Private/Apple/AppleSentrySubsystem.cpp | 21 ++++++++++--------- .../Sentry/Private/Mac/MacSentrySubsystem.cpp | 6 +++--- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index f4f21efef..c30d13fc4 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -390,7 +390,7 @@ void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr event IFileManager& fileManager = IFileManager::Get(); if (!fileManager.FileExists(*screenshotFilePath)) { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot.")); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot - path provided did not exist: %s"), *screenshotFilePath); return; } @@ -418,15 +418,16 @@ void FAppleSentrySubsystem::CreateScreenshotBackup() const const FString& screenshotFilePath = GetScreenshotPath(); IFileManager& fileManager = IFileManager::Get(); - if (fileManager.FileExists(*screenshotFilePath)) + + FString name, extension; + FString(screenshotFilePath).Split(TEXT("."), &name, &extension, ESearchCase::CaseSensitive, ESearchDir::FromEnd); + + FDateTime originalTime = fileManager.GetTimeStamp(*screenshotFilePath); + + FString backupFilePath = FString::Printf(TEXT("%s%s%s.%s"), *name, TEXT("-backup-"), *originalTime.ToString(), *extension); + + if (!fileManager.Move(*backupFilePath, *screenshotFilePath, true)) { - FString name, extension; - FString(screenshotFilePath).Split(TEXT("."), &name, &extension, ESearchCase::CaseSensitive, ESearchDir::FromEnd); - FDateTime originalTime = fileManager.GetTimeStamp(*screenshotFilePath); - FString backupFilePath = FString::Printf(TEXT("%s%s%s.%s"), *name, TEXT("-backup-"), *originalTime.ToString(), *extension); - if (!fileManager.Move(*backupFilePath, *screenshotFilePath, true)) - { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to backup screenshot.")); - } + UE_LOG(LogSentrySdk, Error, TEXT("Failed to backup screenshot.")); } } diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index 7d0e67c9f..dd6d669e3 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -44,7 +44,7 @@ void FMacSentrySubsystem::TryCaptureScreenshot() const NSWindow* MainWindow = [NSApp mainWindow]; if (!MainWindow) { - UE_LOG(LogSentrySdk, Log, TEXT("No main window found!")); + UE_LOG(LogSentrySdk, Error, TEXT("No main window found!")); return; } @@ -54,7 +54,7 @@ void FMacSentrySubsystem::TryCaptureScreenshot() const if (!ScreenshotRef) { - UE_LOG(LogSentrySdk, Log, TEXT("Failed to capture screenshot.")); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to capture screenshot - invalid ScreenshotRef.")); return; } @@ -74,7 +74,7 @@ void FMacSentrySubsystem::TryCaptureScreenshot() const } else { - UE_LOG(LogSentrySdk, Log, TEXT("Failed to save screenshot.")); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *FilePath); } CGImageRelease(ScreenshotRef); From 7cb90cd548a4fb33f289b46a89e23a62f2888562 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Tue, 15 Apr 2025 16:54:17 +0300 Subject: [PATCH 14/18] Remove screenshot backup --- .../Private/Apple/AppleSentrySubsystem.cpp | 42 +++++++++---------- .../Private/Apple/AppleSentrySubsystem.h | 5 +-- .../Sentry/Private/IOS/IOSSentrySubsystem.cpp | 9 +--- .../Sentry/Private/IOS/IOSSentrySubsystem.h | 5 +-- .../Sentry/Private/Mac/MacSentrySubsystem.cpp | 17 +++----- .../Sentry/Private/Mac/MacSentrySubsystem.h | 5 +-- 6 files changed, 33 insertions(+), 50 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index c30d13fc4..b1a414cb0 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -385,18 +385,25 @@ TSharedPtr FAppleSentrySubsystem::ContinueTrace(const void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr eventId) const { - const FString& screenshotFilePath = GetScreenshotPath(); + FString screenshotFilePath = GetScreenshotPath(eventId); IFileManager& fileManager = IFileManager::Get(); if (!fileManager.FileExists(*screenshotFilePath)) { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot - path provided did not exist: %s"), *screenshotFilePath); - return; + // Couldn't find screenshot with a name that matches given Event ID so we will check for the default 'screenshot.png' + // that gets created during assertion/crash and is not associated with any event. + screenshotFilePath = GetScreenshotPath(); + + if (!fileManager.FileExists(*screenshotFilePath)) + { + UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot - path provided did not exist: %s"), *screenshotFilePath); + return; + } } const FString& screenshotFilePathExt = fileManager.ConvertToAbsolutePathForExternalAppForRead(*screenshotFilePath); - SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePathExt.GetNSString()]; + SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePathExt.GetNSString() filename:@"screenshot.png"]; SentryOptions* options = [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) options]; int32 size = options.maxAttachmentSize; @@ -409,25 +416,18 @@ void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr event [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; - // After uploading screenshot create its timestamped backup - CreateScreenshotBackup(); + // After uploading screenshot it's no longer needed so delete + if (!fileManager.Delete(*screenshotFilePath)) + { + UE_LOG(LogSentrySdk, Error, TEXT("Failed to delete screenshot: %s"), *screenshotFilePath); + } } -void FAppleSentrySubsystem::CreateScreenshotBackup() const +FString FAppleSentrySubsystem::GetScreenshotPath(TSharedPtr eventId) const { - const FString& screenshotFilePath = GetScreenshotPath(); - - IFileManager& fileManager = IFileManager::Get(); - - FString name, extension; - FString(screenshotFilePath).Split(TEXT("."), &name, &extension, ESearchCase::CaseSensitive, ESearchDir::FromEnd); + FString screenshotFileName = eventId != nullptr + ? FString::Printf(TEXT("screenshot-%s.png"), *eventId->ToString()) + : TEXT("screenshot.png"); - FDateTime originalTime = fileManager.GetTimeStamp(*screenshotFilePath); - - FString backupFilePath = FString::Printf(TEXT("%s%s%s.%s"), *name, TEXT("-backup-"), *originalTime.ToString(), *extension); - - if (!fileManager.Move(*backupFilePath, *screenshotFilePath, true)) - { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to backup screenshot.")); - } + return FPaths::Combine(FPaths::ProjectSavedDir(), screenshotFileName); } diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h index b71412e9a..9564867b8 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h @@ -35,11 +35,10 @@ class FAppleSentrySubsystem : public ISentrySubsystem virtual TSharedPtr StartTransactionWithContextAndOptions(TSharedPtr context, const TMap& options) override; virtual TSharedPtr ContinueTrace(const FString& sentryTrace, const TArray& baggageHeaders) override; - virtual void TryCaptureScreenshot() const {}; + virtual void TryCaptureScreenshot(TSharedPtr eventId = nullptr) const {}; protected: void UploadScreenshotForEvent(TSharedPtr eventId) const; - void CreateScreenshotBackup() const; - virtual FString GetScreenshotPath() const { return FString(); } + virtual FString GetScreenshotPath(TSharedPtr eventId = nullptr) const; }; diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp index 58e977fe8..5ab6ae2ca 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp @@ -78,7 +78,7 @@ void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USen FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler); } -void FIOSSentrySubsystem::TryCaptureScreenshot() const +void FIOSSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) const { dispatch_sync(dispatch_get_main_queue(), ^{ UIGraphicsBeginImageContextWithOptions([IOSAppDelegate GetDelegate].RootView.bounds.size, NO, 2.0f); @@ -93,7 +93,7 @@ void FIOSSentrySubsystem::TryCaptureScreenshot() const ImageBytes.AddUninitialized(SavedSize); FPlatformMemory::Memcpy(ImageBytes.GetData(), [ImageData bytes], SavedSize); - FString FilePath = GetScreenshotPath(); + FString FilePath = GetScreenshotPath(eventId); if (FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) { @@ -105,8 +105,3 @@ void FIOSSentrySubsystem::TryCaptureScreenshot() const } }); } - -FString FIOSSentrySubsystem::GetScreenshotPath() const -{ - return FPaths::Combine(FPaths::ProjectSavedDir(), TEXT("screenshot.png")); -} diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h index b457226fe..5784769f0 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h @@ -12,10 +12,7 @@ class FIOSSentrySubsystem : public FAppleSentrySubsystem USentryTraceSampler* TraceSampler ) override; - virtual void TryCaptureScreenshot() const override; - -protected: - virtual FString GetScreenshotPath() const override; + virtual void TryCaptureScreenshot(TSharedPtr eventId = nullptr) const override; }; typedef FIOSSentrySubsystem FPlatformSentrySubsystem; diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index dd6d669e3..262334d8b 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -32,14 +32,14 @@ TSharedPtr FMacSentrySubsystem::CaptureEnsure(const FString& type, co if (isScreenshotAttachmentEnabled) { - TryCaptureScreenshot(); + TryCaptureScreenshot(id); UploadScreenshotForEvent(id); } return id; } -void FMacSentrySubsystem::TryCaptureScreenshot() const +void FMacSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) const { NSWindow* MainWindow = [NSApp mainWindow]; if (!MainWindow) @@ -66,21 +66,16 @@ void FMacSentrySubsystem::TryCaptureScreenshot() const ImageBytes.AddUninitialized(SavedSize); FPlatformMemory::Memcpy(ImageBytes.GetData(), [ImageData bytes], SavedSize); - FString FilePath = GetScreenshotPath(); + FString ScreenshotPath = GetScreenshotPath(eventId); - if (FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) + if (FFileHelper::SaveArrayToFile(ImageBytes, *ScreenshotPath)) { - UE_LOG(LogSentrySdk, Log, TEXT("Screenshot saved to: %s"), *FilePath); + UE_LOG(LogSentrySdk, Log, TEXT("Screenshot saved to: %s"), *ScreenshotPath); } else { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *FilePath); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *ScreenshotPath); } CGImageRelease(ScreenshotRef); } - -FString FMacSentrySubsystem::GetScreenshotPath() const -{ - return FPaths::Combine(FPaths::ProjectSavedDir(), TEXT("screenshot.png")); -} diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h index c926cdd44..ffe91296d 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h @@ -14,10 +14,7 @@ class FMacSentrySubsystem : public FAppleSentrySubsystem virtual TSharedPtr CaptureEnsure(const FString& type, const FString& message) override; - virtual void TryCaptureScreenshot() const override; - -protected: - virtual FString GetScreenshotPath() const override; + virtual void TryCaptureScreenshot(TSharedPtr eventId = nullptr) const override; private: bool isScreenshotAttachmentEnabled = false; From 705f55155a00da7516e08c7932cc9b60efb85fba Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Tue, 15 Apr 2025 22:18:25 +0300 Subject: [PATCH 15/18] Update plugin-dev/Source/Sentry/Public/SentrySettings.h Co-authored-by: Bruno Garcia --- plugin-dev/Source/Sentry/Public/SentrySettings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-dev/Source/Sentry/Public/SentrySettings.h b/plugin-dev/Source/Sentry/Public/SentrySettings.h index a5af4fd3d..abdb38757 100644 --- a/plugin-dev/Source/Sentry/Public/SentrySettings.h +++ b/plugin-dev/Source/Sentry/Public/SentrySettings.h @@ -226,7 +226,7 @@ class SENTRY_API USentrySettings : public UObject bool AttachGpuDump; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "General|Attachments", - Meta = (DisplayName = "Max attachment size in bytes", Tooltip = "Max attachment size for each attachment in bytes. Default is 20 MiB. Please also check the maximum attachment size of Relay to make sure your attachments don't get discarded there: https://docs.sentry.io/product/relay/options/")) + Meta = (DisplayName = "Max attachment size in bytes", Tooltip = "Max attachment size for each attachment in bytes. Default is 20 MiB compressed but this size is planned to be increased. Please also check the maximum attachment size of Relay to make sure your attachments don't get discarded there: https://docs.sentry.io/product/relay/options/")) int32 MaxAttachmentSize; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "General|Breadcrumbs", From b26a7d85a422669f86482e9e666f1a1f3012cfef Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Wed, 16 Apr 2025 09:12:41 +0300 Subject: [PATCH 16/18] Minor logging tweaks --- .../Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp | 6 +----- .../Source/Sentry/Private/Mac/MacSentrySubsystem.cpp | 10 +++------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp index 5ab6ae2ca..67fd2dd0e 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp @@ -95,11 +95,7 @@ void FIOSSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) co FString FilePath = GetScreenshotPath(eventId); - if (FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) - { - UE_LOG(LogSentrySdk, Log, TEXT("Screenshot saved to: %s"), *FilePath); - } - else + if (!FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) { UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *FilePath); } diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index 262334d8b..3990d3e90 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -66,16 +66,12 @@ void FMacSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) co ImageBytes.AddUninitialized(SavedSize); FPlatformMemory::Memcpy(ImageBytes.GetData(), [ImageData bytes], SavedSize); + CGImageRelease(ScreenshotRef); + FString ScreenshotPath = GetScreenshotPath(eventId); - if (FFileHelper::SaveArrayToFile(ImageBytes, *ScreenshotPath)) - { - UE_LOG(LogSentrySdk, Log, TEXT("Screenshot saved to: %s"), *ScreenshotPath); - } - else + if (!FFileHelper::SaveArrayToFile(ImageBytes, *ScreenshotPath)) { UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *ScreenshotPath); } - - CGImageRelease(ScreenshotRef); } From 50c8e747bb4bd57fa6fb6588acd65ddfccf8696d Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Wed, 16 Apr 2025 09:12:56 +0300 Subject: [PATCH 17/18] Fix ensure handler for Mac --- plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index 3990d3e90..1e46713ab 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -17,7 +17,7 @@ void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USen isScreenshotAttachmentEnabled = Settings->AttachScreenshot; - if (Settings->AttachScreenshot) + if (IsEnabled() && Settings->AttachScreenshot) { FCoreDelegates::OnHandleSystemError.AddLambda([this]() { From 6d1a1c78b847c6e16385d2058ed8f3a9c2f58171 Mon Sep 17 00:00:00 2001 From: Ivan Tustanivskyi Date: Wed, 16 Apr 2025 12:41:12 +0300 Subject: [PATCH 18/18] Rework screenshot uploading --- .../Private/Apple/AppleSentrySubsystem.cpp | 65 ++++++++++++------- .../Private/Apple/AppleSentrySubsystem.h | 7 +- .../Sentry/Private/IOS/IOSSentrySubsystem.cpp | 12 ++-- .../Sentry/Private/IOS/IOSSentrySubsystem.h | 2 +- .../Sentry/Private/Mac/MacSentrySubsystem.cpp | 18 +++-- .../Sentry/Private/Mac/MacSentrySubsystem.h | 2 +- 6 files changed, 68 insertions(+), 38 deletions(-) diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp index b1a414cb0..08ffb5152 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.cpp @@ -76,7 +76,13 @@ void FAppleSentrySubsystem::InitWithSettings(const USentrySettings* settings, US options.onCrashedLastRun = ^(SentryEvent* event) { if (settings->AttachScreenshot) { - UploadScreenshotForEvent(MakeShareable(new SentryIdApple(event.eventId))); + // If a screenshot was captured during assertion/crash in the previous app run + // find the most recent one and upload it to Sentry. + const FString& screenshotPath = GetLatestScreenshot(); + if (!screenshotPath.IsEmpty()) + { + UploadScreenshotForEvent(MakeShareable(new SentryIdApple(event.eventId)), screenshotPath); + } } }; options.beforeSend = ^SentryEvent* (SentryEvent* event) { @@ -383,25 +389,16 @@ TSharedPtr FAppleSentrySubsystem::ContinueTrace(const return MakeShareable(new SentryTransactionContextApple(transactionContext)); } -void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr eventId) const +void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr eventId, const FString& screenshotPath) const { - FString screenshotFilePath = GetScreenshotPath(eventId); - IFileManager& fileManager = IFileManager::Get(); - if (!fileManager.FileExists(*screenshotFilePath)) + if (!fileManager.FileExists(*screenshotPath)) { - // Couldn't find screenshot with a name that matches given Event ID so we will check for the default 'screenshot.png' - // that gets created during assertion/crash and is not associated with any event. - screenshotFilePath = GetScreenshotPath(); - - if (!fileManager.FileExists(*screenshotFilePath)) - { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot - path provided did not exist: %s"), *screenshotFilePath); - return; - } + UE_LOG(LogSentrySdk, Error, TEXT("Failed to upload screenshot - path provided did not exist: %s"), *screenshotPath); + return; } - const FString& screenshotFilePathExt = fileManager.ConvertToAbsolutePathForExternalAppForRead(*screenshotFilePath); + const FString& screenshotFilePathExt = fileManager.ConvertToAbsolutePathForExternalAppForRead(*screenshotPath); SentryAttachment* screenshotAttachment = [[SENTRY_APPLE_CLASS(SentryAttachment) alloc] initWithPath:screenshotFilePathExt.GetNSString() filename:@"screenshot.png"]; @@ -417,17 +414,41 @@ void FAppleSentrySubsystem::UploadScreenshotForEvent(TSharedPtr event [SENTRY_APPLE_CLASS(PrivateSentrySDKOnly) captureEnvelope:envelope]; // After uploading screenshot it's no longer needed so delete - if (!fileManager.Delete(*screenshotFilePath)) + if (!fileManager.Delete(*screenshotPath)) { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to delete screenshot: %s"), *screenshotFilePath); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to delete screenshot: %s"), *screenshotPath); } } -FString FAppleSentrySubsystem::GetScreenshotPath(TSharedPtr eventId) const +FString FAppleSentrySubsystem::GetScreenshotPath() const +{ + return FPaths::Combine(FPaths::ProjectSavedDir(), TEXT("SentryScreenshots"), FString::Printf(TEXT("screenshot-%s.png"), *FDateTime::Now().ToString())); +} + +FString FAppleSentrySubsystem::GetLatestScreenshot() const { - FString screenshotFileName = eventId != nullptr - ? FString::Printf(TEXT("screenshot-%s.png"), *eventId->ToString()) - : TEXT("screenshot.png"); + const FString& ScreenshotsDir = FPaths::Combine(FPaths::ProjectSavedDir(), TEXT("SentryScreenshots")); + + TArray Screenshots; + IFileManager::Get().FindFiles(Screenshots, *ScreenshotsDir, TEXT("*.png")); + + if(Screenshots.Num() == 0) + { + UE_LOG(LogSentrySdk, Log, TEXT("There are no screenshots found.")); + return FString(""); + } + + for (int i = 0; i < Screenshots.Num(); ++i) + { + Screenshots[i] = ScreenshotsDir / Screenshots[i]; + } + + Screenshots.Sort([](const FString& A, const FString& B) + { + const FDateTime TimestampA = IFileManager::Get().GetTimeStamp(*A); + const FDateTime TimestampB = IFileManager::Get().GetTimeStamp(*B); + return TimestampB < TimestampA; + }); - return FPaths::Combine(FPaths::ProjectSavedDir(), screenshotFileName); + return Screenshots[0]; } diff --git a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h index 9564867b8..8ed556d6e 100644 --- a/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Apple/AppleSentrySubsystem.h @@ -35,10 +35,11 @@ class FAppleSentrySubsystem : public ISentrySubsystem virtual TSharedPtr StartTransactionWithContextAndOptions(TSharedPtr context, const TMap& options) override; virtual TSharedPtr ContinueTrace(const FString& sentryTrace, const TArray& baggageHeaders) override; - virtual void TryCaptureScreenshot(TSharedPtr eventId = nullptr) const {}; + virtual FString TryCaptureScreenshot() const { return FString(); }; protected: - void UploadScreenshotForEvent(TSharedPtr eventId) const; + void UploadScreenshotForEvent(TSharedPtr eventId, const FString& screenshotPath) const; - virtual FString GetScreenshotPath(TSharedPtr eventId = nullptr) const; + virtual FString GetScreenshotPath() const; + virtual FString GetLatestScreenshot() const; }; diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp index 67fd2dd0e..d61f44486 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp @@ -78,8 +78,10 @@ void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USen FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler); } -void FIOSSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) const +FString FIOSSentrySubsystem::TryCaptureScreenshot() const { + FString ScreenshotPath = GetScreenshotPath(); + dispatch_sync(dispatch_get_main_queue(), ^{ UIGraphicsBeginImageContextWithOptions([IOSAppDelegate GetDelegate].RootView.bounds.size, NO, 2.0f); [[IOSAppDelegate GetDelegate].RootView drawViewHierarchyInRect:[IOSAppDelegate GetDelegate].RootView.bounds afterScreenUpdates:YES]; @@ -93,11 +95,11 @@ void FIOSSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) co ImageBytes.AddUninitialized(SavedSize); FPlatformMemory::Memcpy(ImageBytes.GetData(), [ImageData bytes], SavedSize); - FString FilePath = GetScreenshotPath(eventId); - - if (!FFileHelper::SaveArrayToFile(ImageBytes, *FilePath)) + if (!FFileHelper::SaveArrayToFile(ImageBytes, *ScreenshotPath)) { - UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *FilePath); + UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *ScreenshotPath); } }); + + return ScreenshotPath; } diff --git a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h index 5784769f0..4070d999a 100644 --- a/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h @@ -12,7 +12,7 @@ class FIOSSentrySubsystem : public FAppleSentrySubsystem USentryTraceSampler* TraceSampler ) override; - virtual void TryCaptureScreenshot(TSharedPtr eventId = nullptr) const override; + virtual FString TryCaptureScreenshot() const override; }; typedef FIOSSentrySubsystem FPlatformSentrySubsystem; diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp index 1e46713ab..d780af6b0 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp @@ -32,20 +32,23 @@ TSharedPtr FMacSentrySubsystem::CaptureEnsure(const FString& type, co if (isScreenshotAttachmentEnabled) { - TryCaptureScreenshot(id); - UploadScreenshotForEvent(id); + const FString& screenshotPath = TryCaptureScreenshot(); + if (!screenshotPath.IsEmpty()) + { + UploadScreenshotForEvent(id, screenshotPath); + } } return id; } -void FMacSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) const +FString FMacSentrySubsystem::TryCaptureScreenshot() const { NSWindow* MainWindow = [NSApp mainWindow]; if (!MainWindow) { UE_LOG(LogSentrySdk, Error, TEXT("No main window found!")); - return; + return FString(""); } NSRect WindowRect = [MainWindow frame]; @@ -55,7 +58,7 @@ void FMacSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) co if (!ScreenshotRef) { UE_LOG(LogSentrySdk, Error, TEXT("Failed to capture screenshot - invalid ScreenshotRef.")); - return; + return FString(""); } NSBitmapImageRep* BitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:ScreenshotRef]; @@ -68,10 +71,13 @@ void FMacSentrySubsystem::TryCaptureScreenshot(TSharedPtr eventId) co CGImageRelease(ScreenshotRef); - FString ScreenshotPath = GetScreenshotPath(eventId); + FString ScreenshotPath = GetScreenshotPath(); if (!FFileHelper::SaveArrayToFile(ImageBytes, *ScreenshotPath)) { UE_LOG(LogSentrySdk, Error, TEXT("Failed to save screenshot to: %s"), *ScreenshotPath); + return FString(""); } + + return ScreenshotPath; } diff --git a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h index ffe91296d..58ae2607f 100644 --- a/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h +++ b/plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.h @@ -14,7 +14,7 @@ class FMacSentrySubsystem : public FAppleSentrySubsystem virtual TSharedPtr CaptureEnsure(const FString& type, const FString& message) override; - virtual void TryCaptureScreenshot(TSharedPtr eventId = nullptr) const override; + virtual FString TryCaptureScreenshot() const override; private: bool isScreenshotAttachmentEnabled = false;