diff --git a/CHANGELOG.md b/CHANGELOG.md index f699acc9d5..3c59bf715d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +### Features +- DebugStackTrace no longer creates a stack trace for dynamic methods, which should result in slightly better performance when capturing errors ([#4954](https://github.com/getsentry/sentry-dotnet/pull/4954)) + ### Fixes - The SDK now logs a `Warning` instead of an `Error` when being ratelimited ([#4927](https://github.com/getsentry/sentry-dotnet/pull/4927)) diff --git a/src/Sentry/Internal/DebugStackTrace.cs b/src/Sentry/Internal/DebugStackTrace.cs index 6ad3c94320..b4f358a463 100644 --- a/src/Sentry/Internal/DebugStackTrace.cs +++ b/src/Sentry/Internal/DebugStackTrace.cs @@ -532,14 +532,18 @@ private static void DemangleLambdaReturnType(SentryStackFrame frame) return reader.Invoke(assemblyName); } - var assembly = options.FileSystem.OpenFileForReading(assemblyName); - return new PEReader(assembly); + if (options.FileSystem.FileExists(assemblyName)) + { + var assembly = options.FileSystem.OpenFileForReading(assemblyName); + return new PEReader(assembly); + } } - catch (Exception) + catch { - assemblyName = null; - return null; + // Swallow and return null below } + assemblyName = null; + return null; } private int? AddManagedModuleDebugImage(Module module)