diff --git a/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs b/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs
index be7d729dd019e4..c2d8f544650eac 100644
--- a/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs
+++ b/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs
@@ -524,10 +524,19 @@ public unsafe AssemblyInfo(string url, byte[] assembly, byte[] pdb)
asmStream = new MemoryStream(assembly);
peReader = new PEReader(asmStream);
asmMetadataReader = PEReaderExtensions.GetMetadataReader(peReader);
+ Name = asmMetadataReader.GetAssemblyDefinition().GetAssemblyName().Name + ".dll";
+ AssemblyNameUnqualified = Name;
if (pdb != null)
{
pdbStream = new MemoryStream(pdb);
- pdbMetadataReader = MetadataReaderProvider.FromPortablePdbStream(pdbStream).GetMetadataReader();
+ try
+ {
+ pdbMetadataReader = MetadataReaderProvider.FromPortablePdbStream(pdbStream).GetMetadataReader();
+ }
+ catch (BadImageFormatException)
+ {
+ Console.WriteLine($"Warning: Unable to read debug information of: {Name} (use DebugType=Portable/Embedded)");
+ }
}
else
{
@@ -538,8 +547,6 @@ public unsafe AssemblyInfo(string url, byte[] assembly, byte[] pdb)
pdbMetadataReader = peReader.ReadEmbeddedPortablePdbDebugDirectoryData(embeddedPdbEntry).GetMetadataReader();
}
}
- Name = asmMetadataReader.GetAssemblyDefinition().GetAssemblyName().Name + ".dll";
- AssemblyNameUnqualified = asmMetadataReader.GetAssemblyDefinition().GetAssemblyName().Name + ".dll";
Populate();
}
diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs
index d5e3a7b7b3cfc1..9a7879190055d2 100644
--- a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs
+++ b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs
@@ -860,6 +860,34 @@ await EvaluateAndCheck(
);
}
+ [Fact]
+ public async Task InspectLocalsUsingClassFromLibraryUsingDebugTypeFull()
+ {
+ byte[] bytes = File.ReadAllBytes(Path.Combine(DebuggerTestAppPath, "debugger-test-with-full-debug-type.dll"));
+ string asm_base64 = Convert.ToBase64String(bytes);
+
+ string pdb_base64 = null;
+ bytes = File.ReadAllBytes(Path.Combine(DebuggerTestAppPath, "debugger-test-with-full-debug-type.pdb"));
+ pdb_base64 = Convert.ToBase64String(bytes);
+
+ var expression = $"{{ let asm_b64 = '{asm_base64}'; let pdb_b64 = '{pdb_base64}'; invoke_static_method('[debugger-test] DebugTypeFull:CallToEvaluateLocal', asm_b64, pdb_b64); }}";
+
+ await EvaluateAndCheck(
+ "window.setTimeout(function() {" + expression + "; }, 1);",
+ "dotnet://debugger-test.dll/debugger-test.cs", 818, 8,
+ "CallToEvaluateLocal",
+ wait_for_event_fn: async (pause_location) =>
+ {
+ var a_props = await GetObjectOnFrame(pause_location["callFrames"][0], "a");
+ await CheckProps(a_props, new
+ {
+ a = TNumber(10),
+ b = TNumber(20),
+ c = TNumber(30)
+ }, "a");
+ }
+ );
+ }
//TODO add tests covering basic stepping behavior as step in/out/over
}
}
diff --git a/src/mono/wasm/debugger/tests/debugger-test/debugger-test.cs b/src/mono/wasm/debugger/tests/debugger-test/debugger-test.cs
index 2338c9e65d624a..df623485bf1576 100644
--- a/src/mono/wasm/debugger/tests/debugger-test/debugger-test.cs
+++ b/src/mono/wasm/debugger/tests/debugger-test/debugger-test.cs
@@ -807,3 +807,15 @@ public int Increment(int count)
return count + 1;
}
}
+
+public class DebugTypeFull
+{
+ public static void CallToEvaluateLocal(string asm_base64, string pdb_base64)
+ {
+ var asm = System.Reflection.Assembly.LoadFrom("debugger-test-with-full-debug-type.dll");
+ var myType = asm.GetType("DebuggerTests.ClassToInspectWithDebugTypeFull");
+ var myMethod = myType.GetConstructor(new Type[] { });
+ var a = myMethod.Invoke(new object[]{});
+ System.Diagnostics.Debugger.Break();
+ }
+}
\ No newline at end of file
diff --git a/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj b/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj
index 145c80e8c20fc6..7e8478cfc07b25 100644
--- a/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj
+++ b/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj
@@ -22,10 +22,12 @@
+
+ false
$(AppDir)
$(MonoProjectRoot)wasm\runtime-test.js
@@ -37,6 +39,7 @@
+