-
Notifications
You must be signed in to change notification settings - Fork 5.3k
[wasm][debugger] View object attributes - DebugType=full #62278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 4 commits
8f51971
ef5aaf9
efc93e0
01630c0
f788f9f
083368a
0aea3de
1a30555
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -526,37 +526,49 @@ internal class AssemblyInfo | |
| internal string Url { get; } | ||
| internal MetadataReader asmMetadataReader { get; } | ||
| internal MetadataReader pdbMetadataReader { get; set; } | ||
| internal List<MemoryStream> enCMemoryStream = new List<MemoryStream>(); | ||
| internal List<MetadataReader> enCMetadataReader = new List<MetadataReader>(); | ||
| internal PEReader peReader; | ||
| internal MemoryStream asmStream; | ||
| internal MemoryStream pdbStream; | ||
| public int DebugId { get; set; } | ||
| internal int PdbAge { get; } | ||
| internal System.Guid PdbGuid { get; } | ||
| internal string PdbName { get; } | ||
|
|
||
| public bool TriedToLoadSymbolsOnDemand { get; set; } | ||
|
|
||
| public unsafe AssemblyInfo(string url, byte[] assembly, byte[] pdb) | ||
| { | ||
| this.id = Interlocked.Increment(ref next_id); | ||
| asmStream = new MemoryStream(assembly); | ||
| peReader = new PEReader(asmStream); | ||
| var asmStream = new MemoryStream(assembly); | ||
| var peReader = new PEReader(asmStream); | ||
thaystg marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| var entries = peReader.ReadDebugDirectory(); | ||
thaystg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| var codeView = entries[0]; | ||
radical marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| var codeViewData = peReader.ReadCodeViewDebugDirectoryData(codeView); | ||
thaystg marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| PdbAge = codeViewData.Age; | ||
| PdbGuid = codeViewData.Guid; | ||
| PdbName = codeViewData.Path; | ||
| asmMetadataReader = PEReaderExtensions.GetMetadataReader(peReader); | ||
| var asmDef = asmMetadataReader.GetAssemblyDefinition(); | ||
radical marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Name = asmDef.GetAssemblyName().Name + ".dll"; | ||
| AssemblyNameUnqualified = asmDef.GetAssemblyName().Name + ".dll"; | ||
radical marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| if (pdb != null) | ||
| { | ||
| pdbStream = new MemoryStream(pdb); | ||
| pdbMetadataReader = MetadataReaderProvider.FromPortablePdbStream(pdbStream).GetMetadataReader(); | ||
| var pdbStream = new MemoryStream(pdb); | ||
| try | ||
| { | ||
thaystg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| pdbMetadataReader = MetadataReaderProvider.FromPortablePdbStream(pdbStream).GetMetadataReader(); | ||
radical marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| } | ||
| catch (BadImageFormatException) | ||
| { | ||
| Console.WriteLine($"Warning: Unable to read debug information of: {Name} (use DebugType=Portable/Embedded)"); | ||
|
||
| } | ||
| } | ||
| else | ||
| { | ||
| var entries = peReader.ReadDebugDirectory(); | ||
| var embeddedPdbEntry = entries.FirstOrDefault(e => e.Type == DebugDirectoryEntryType.EmbeddedPortablePdb); | ||
| if (embeddedPdbEntry.DataSize != 0) | ||
| { | ||
| pdbMetadataReader = peReader.ReadEmbeddedPortablePdbDebugDirectoryData(embeddedPdbEntry).GetMetadataReader(); | ||
| } | ||
| } | ||
| Name = asmMetadataReader.GetAssemblyDefinition().GetAssemblyName().Name + ".dll"; | ||
| AssemblyNameUnqualified = asmMetadataReader.GetAssemblyDefinition().GetAssemblyName().Name + ".dll"; | ||
| Populate(); | ||
| } | ||
|
|
||
|
|
@@ -566,8 +578,6 @@ public bool EnC(byte[] meta, byte[] pdb) | |
| MetadataReader asmMetadataReader = MetadataReaderProvider.FromMetadataStream(asmStream).GetMetadataReader(); | ||
| var pdbStream = new MemoryStream(pdb); | ||
| MetadataReader pdbMetadataReader = MetadataReaderProvider.FromPortablePdbStream(pdbStream).GetMetadataReader(); | ||
| enCMemoryStream.Add(asmStream); | ||
| enCMemoryStream.Add(pdbStream); | ||
| enCMetadataReader.Add(asmMetadataReader); | ||
| enCMetadataReader.Add(pdbMetadataReader); | ||
| PopulateEnC(asmMetadataReader, pdbMetadataReader); | ||
|
|
@@ -728,7 +738,7 @@ public TypeInfo GetTypeByName(string name) | |
|
|
||
| internal void UpdatePdbInformation(Stream streamToReadFrom) | ||
| { | ||
| pdbStream = new MemoryStream(); | ||
| var pdbStream = new MemoryStream(); | ||
| streamToReadFrom.CopyTo(pdbStream); | ||
| pdbMetadataReader = MetadataReaderProvider.FromPortablePdbStream(pdbStream).GetMetadataReader(); | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| <Project Sdk="Microsoft.NET.Sdk"> | ||
| <PropertyGroup> | ||
| <DebugType>full</DebugType> | ||
| </PropertyGroup> | ||
| </Project> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| using System; | ||
|
|
||
| namespace DebuggerTests | ||
| { | ||
| public class ClassToInspectWithDebugTypeFull | ||
| { | ||
| int a; | ||
| int b; | ||
| int c; | ||
| public ClassToInspectWithDebugTypeFull() | ||
| { | ||
| a = 10; | ||
| b = 20; | ||
| c = 30; | ||
| Console.WriteLine(a); | ||
| Console.WriteLine(b); | ||
| Console.WriteLine(c); | ||
| } | ||
| } | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.