Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "Utils/SentryFileUtils.h"

#include "Dom/JsonObject.h"
#include "Misc/OutputDeviceError.h"
#include "Serialization/JsonSerializer.h"

void FAndroidSentrySubsystem::InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryBeforeBreadcrumbHandler* beforeBreadcrumbHandler, USentryTraceSampler* traceSampler)
Expand Down Expand Up @@ -296,3 +297,9 @@ TSharedPtr<ISentryTransactionContext> FAndroidSentrySubsystem::ContinueTrace(con

return MakeShareable(new FAndroidSentryTransactionContext(*transactionContext));
}

void FAndroidSentrySubsystem::HandleAssert()
{
GError->HandleError();
PLATFORM_BREAK();
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ class FAndroidSentrySubsystem : public ISentrySubsystem
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndTimestamp(TSharedPtr<ISentryTransactionContext> context, int64 timestamp) override;
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndOptions(TSharedPtr<ISentryTransactionContext> context, const TMap<FString, FString>& options) override;
virtual TSharedPtr<ISentryTransactionContext> ContinueTrace(const FString& sentryTrace, const TArray<FString>& baggageHeaders) override;

virtual void HandleAssert() override;
};

typedef FAndroidSentrySubsystem FPlatformSentrySubsystem;
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ class FAppleSentrySubsystem : public ISentrySubsystem
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndOptions(TSharedPtr<ISentryTransactionContext> context, const TMap<FString, FString>& options) override;
virtual TSharedPtr<ISentryTransactionContext> ContinueTrace(const FString& sentryTrace, const TArray<FString>& baggageHeaders) override;

virtual void HandleAssert() override {}

virtual FString TryCaptureScreenshot() const { return FString(); };

protected:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ class FGenericPlatformSentrySubsystem : public ISentrySubsystem
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndOptions(TSharedPtr<ISentryTransactionContext> context, const TMap<FString, FString>& options) override;
virtual TSharedPtr<ISentryTransactionContext> ContinueTrace(const FString& sentryTrace, const TArray<FString>& baggageHeaders) override;

virtual void HandleAssert() override {}

USentryBeforeSendHandler* GetBeforeSendHandler();
USentryBeforeBreadcrumbHandler* GetBeforeBreadcrumbHandler();

Expand Down
14 changes: 11 additions & 3 deletions plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void RestoreDefaultSignalHandlers()

static void IOSSentrySignalHandler(int Signal, siginfo_t* Info, void* Context)
{
if (GIOSSentrySubsystem && GIOSSentrySubsystem->IsEnabled())
if (GIOSSentrySubsystem && GIOSSentrySubsystem->IsEnabled() && GIOSSentrySubsystem->IsScreenshotEnabled())
{
GIOSSentrySubsystem->TryCaptureScreenshot();
}
Expand All @@ -72,14 +72,22 @@ void InstallSentrySignalHandler()
sigaction(SIGSYS, &Action, NULL);
}

void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler)
void FIOSSentrySubsystem::InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryBeforeBreadcrumbHandler* beforeBreadcrumbHandler, USentryTraceSampler* traceSampler)
{
GIOSSentrySubsystem = this;

SaveDefaultSignalHandlers();
InstallSentrySignalHandler();

FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler);
FAppleSentrySubsystem::InitWithSettings(settings, beforeSendHandler, beforeBreadcrumbHandler, traceSampler);
}

void FIOSSentrySubsystem::HandleAssert()
{
if (isScreenshotAttachmentEnabled)
{
TryCaptureScreenshot();
}
}

FString FIOSSentrySubsystem::TryCaptureScreenshot() const
Expand Down
4 changes: 4 additions & 0 deletions plugin-dev/Source/Sentry/Private/IOS/IOSSentrySubsystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ class FIOSSentrySubsystem : public FAppleSentrySubsystem
public:
virtual void InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryBeforeBreadcrumbHandler* beforeBreadcrumbHandler, USentryTraceSampler* traceSampler) override;

virtual void HandleAssert() override;

virtual FString TryCaptureScreenshot() const override;

bool IsScreenshotEnabled() const { return isScreenshotAttachmentEnabled; }

protected:
virtual FString GetGameLogPath() const override;
virtual FString GetLatestGameLog() const override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ISentrySubsystem
public:
virtual ~ISentrySubsystem() = default;

/** Methods that map directly to the platform's Sentry SDK API */
virtual void InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryBeforeBreadcrumbHandler* beforeBreadcrumbHandler, USentryTraceSampler* traceSampler) = 0;
virtual void Close() = 0;
virtual bool IsEnabled() = 0;
Expand Down Expand Up @@ -58,4 +59,7 @@ class ISentrySubsystem
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndTimestamp(TSharedPtr<ISentryTransactionContext> context, int64 timestamp) = 0;
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndOptions(TSharedPtr<ISentryTransactionContext> context, const TMap<FString, FString>& options) = 0;
virtual TSharedPtr<ISentryTransactionContext> ContinueTrace(const FString& sentryTrace, const TArray<FString>& baggageHeaders) = 0;

/** Unreal-specific methods that are not part of the platform's Sentry SDK API */
virtual void HandleAssert() = 0;
};
4 changes: 2 additions & 2 deletions plugin-dev/Source/Sentry/Private/Mac/MacSentrySubsystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"

void FMacSentrySubsystem::InitWithSettings(const USentrySettings* Settings, USentryBeforeSendHandler* BeforeSendHandler, USentryBeforeBreadcrumbHandler* BeforeBreadcrumbHandler, USentryTraceSampler* TraceSampler)
void FMacSentrySubsystem::InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryBeforeBreadcrumbHandler* beforeBreadcrumbHandler, USentryTraceSampler* traceSampler)
{
FAppleSentrySubsystem::InitWithSettings(Settings, BeforeSendHandler, BeforeBreadcrumbHandler, TraceSampler);
FAppleSentrySubsystem::InitWithSettings(settings, beforeSendHandler, beforeBreadcrumbHandler, traceSampler);

if (IsEnabled() && isScreenshotAttachmentEnabled)
{
Expand Down
2 changes: 2 additions & 0 deletions plugin-dev/Source/Sentry/Private/Null/NullSentrySubsystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ class FNullSentrySubsystem : public ISentrySubsystem
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndTimestamp(TSharedPtr<ISentryTransactionContext> context, int64 timestamp) override { return nullptr; }
virtual TSharedPtr<ISentryTransaction> StartTransactionWithContextAndOptions(TSharedPtr<ISentryTransactionContext> context, const TMap<FString, FString>& options) override { return nullptr; }
virtual TSharedPtr<ISentryTransactionContext> ContinueTrace(const FString& sentryTrace, const TArray<FString>& baggageHeaders) override { return nullptr; }

virtual void HandleAssert() override {}
};

typedef FNullSentrySubsystem FPlatformSentrySubsystem;
10 changes: 1 addition & 9 deletions plugin-dev/Source/Sentry/Private/SentrySubsystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -814,19 +814,11 @@ void USentrySubsystem::ConfigureErrorOutputDevice()
OutputDeviceError = MakeShareable(new FSentryErrorOutputDevice(GError));
if (OutputDeviceError)
{
#if PLATFORM_ANDROID
OnAssertDelegate = OutputDeviceError->OnAssert.AddWeakLambda(this, [this](const FString& Message)
{
GError->HandleError();
PLATFORM_BREAK();
});
#elif PLATFORM_IOS
OnAssertDelegate = OutputDeviceError->OnAssert.AddWeakLambda(this, [this](const FString& Message)
{
check(SubsystemNativeImpl);
StaticCastSharedPtr<FIOSSentrySubsystem>(SubsystemNativeImpl)->TryCaptureScreenshot();
SubsystemNativeImpl->HandleAssert();
});
#endif
GError = OutputDeviceError.Get();
}
}