From ecd081c654d730c80608df1c4d14e9ab6a5ddf96 Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Tue, 14 Mar 2023 10:49:20 +0100 Subject: [PATCH 1/3] uploading all the symbols at 'Temp/ManagedSymbols' --- src/Sentry.Unity.Editor/Native/BuildPostProcess.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs b/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs index 8be834470..4489b02cf 100644 --- a/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs +++ b/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs @@ -178,7 +178,7 @@ private static void UploadDebugSymbols(IDiagnosticLogger logger, BuildTarget tar if (isMono) { - addFilesMatching($"{projectDir}/Temp", new[] { "**/UnityEngine.*.pdb", "**/Assembly-CSharp.pdb" }); + addFilesMatching($"{projectDir}/Temp/ManagedSymbols", new[] { "*.pdb" }); } var cliArgs = "upload-dif "; From eedd4f0a06a0b8c9466da95ddc298646c988c5ff Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Tue, 14 Mar 2023 10:53:32 +0100 Subject: [PATCH 2/3] Updated CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec4bf5cd..0bcb9bcd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixes +- Fixed missing debug file upload for assembly definitions for Mono builds ([#1226](https://github.com/getsentry/sentry-unity/pull/1226)) - The ANR detection is now unaffected by changes to `Time.timescale` ([#1225](https://github.com/getsentry/sentry-unity/pull/1225)) ### Features From 035c633931e1a97655418c5339edac74129d5a33 Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Tue, 14 Mar 2023 16:55:48 +0100 Subject: [PATCH 3/3] refactor --- .../Native/BuildPostProcess.cs | 95 ++++++++++++------- 1 file changed, 59 insertions(+), 36 deletions(-) diff --git a/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs b/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs index 4489b02cf..436125311 100644 --- a/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs +++ b/src/Sentry.Unity.Editor/Native/BuildPostProcess.cs @@ -141,44 +141,67 @@ private static void UploadDebugSymbols(IDiagnosticLogger logger, BuildTarget tar }; addPath(executableName); - if (!isMono) - { - addPath(Path.GetFileNameWithoutExtension(executableName) + "_BackUpThisFolder_ButDontShipItWithYourGame"); - } - if (target is BuildTarget.StandaloneWindows64) - { - addPath("UnityPlayer.dll"); - addPath(Path.GetFileNameWithoutExtension(executableName) + "_Data/Plugins/x86_64/sentry.dll"); - addPath(Path.GetFullPath($"Packages/{SentryPackageInfo.GetName()}/Plugins/Windows/Sentry/sentry.pdb")); - if (isMono) - { - addPath("MonoBleedingEdge/EmbedRuntime"); - addFilesMatching(buildOutputDir, new[] { "*.pdb" }); - } - else - { - addPath("GameAssembly.dll"); - } - } - else if (target is BuildTarget.StandaloneLinux64) - { - addPath("GameAssembly.so"); - addPath("UnityPlayer.so"); - addPath(Path.GetFullPath($"Packages/{SentryPackageInfo.GetName()}/Plugins/Linux/Sentry/libsentry.dbg.so")); - if (isMono) - { - addPath(Path.GetFileNameWithoutExtension(executableName) + "_Data/MonoBleedingEdge/x86_64"); - addFilesMatching(buildOutputDir, new[] { "*.debug" }); - } - } - else if (target is BuildTarget.StandaloneOSX) - { - addPath(Path.GetFullPath($"Packages/{SentryPackageInfo.GetName()}/Plugins/macOS/Sentry/Sentry.dylib.dSYM")); - } - if (isMono) + switch (target) { - addFilesMatching($"{projectDir}/Temp/ManagedSymbols", new[] { "*.pdb" }); + case BuildTarget.StandaloneWindows64: + addPath("UnityPlayer.dll"); + addPath(Path.GetFileNameWithoutExtension(executableName) + "_Data/Plugins/x86_64/sentry.dll"); + addPath(Path.GetFullPath($"Packages/{SentryPackageInfo.GetName()}/Plugins/Windows/Sentry/sentry.pdb")); + + if (isMono) + { + addPath("MonoBleedingEdge/EmbedRuntime"); + addFilesMatching(buildOutputDir, new[] { "*.pdb" }); + + // Unity stores the .pdb files in './Library/ScriptAssemblies/' and starting with 2020 in + // './Temp/ManagedSymbols/'. We want the one in 'Temp/ManagedSymbols/' specifically. + var managedSymbolsDirectory = $"{projectDir}/Temp/ManagedSymbols"; + if (Directory.Exists(managedSymbolsDirectory)) + { + addFilesMatching(managedSymbolsDirectory, new[] { "*.pdb" }); + } + } + else // IL2CPP + { + addPath(Path.GetFileNameWithoutExtension(executableName) + "_BackUpThisFolder_ButDontShipItWithYourGame"); + addPath("GameAssembly.dll"); + } + break; + case BuildTarget.StandaloneLinux64: + addPath("GameAssembly.so"); + addPath("UnityPlayer.so"); + addPath(Path.GetFullPath($"Packages/{SentryPackageInfo.GetName()}/Plugins/Linux/Sentry/libsentry.dbg.so")); + + if (isMono) + { + addPath(Path.GetFileNameWithoutExtension(executableName) + "_Data/MonoBleedingEdge/x86_64"); + addFilesMatching(buildOutputDir, new[] { "*.debug" }); + + var managedSymbolsDirectory = $"{projectDir}/Temp/ManagedSymbols"; + if (Directory.Exists(managedSymbolsDirectory)) + { + addFilesMatching(managedSymbolsDirectory, new[] { "*.pdb" }); + } + } + else // IL2CPP + { + addPath(Path.GetFileNameWithoutExtension(executableName) + "_BackUpThisFolder_ButDontShipItWithYourGame"); + } + break; + case BuildTarget.StandaloneOSX: + addPath(Path.GetFullPath($"Packages/{SentryPackageInfo.GetName()}/Plugins/macOS/Sentry/Sentry.dylib.dSYM")); + + if (isMono) + { } + else // IL2CPP + { + addPath(Path.GetFileNameWithoutExtension(executableName) + "_BackUpThisFolder_ButDontShipItWithYourGame"); + } + break; + default: + logger.LogError($"Symbol upload for '{target}' is currently not supported."); + break; } var cliArgs = "upload-dif ";