Skip to content
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
495a9ac
Add initial managed !fq command
leculver Apr 17, 2023
e207f69
Update ClrMD version
leculver Apr 17, 2023
d93ccbe
Finish managed !fq implementation
leculver Apr 17, 2023
2363ce8
Implement managed !dumpstackobjs
leculver Apr 18, 2023
cf24818
Remove !dso and !fq C++ implementations
leculver Apr 18, 2023
3bd57f3
Remove more dead code
leculver Apr 18, 2023
83ac4ac
More dead code
leculver Apr 18, 2023
1759c12
Remove ObjectSize helpers
leculver Apr 18, 2023
bb6c2d4
Remove usages of g_snapshot
leculver Apr 18, 2023
3dc99ac
Remove GCHeap logic from SOS
leculver Apr 18, 2023
586d172
Cleanup
leculver Apr 18, 2023
ee81771
Add RcwCleanup output
leculver Apr 18, 2023
156f6b7
Ensure what we don't read past stack range
leculver Apr 18, 2023
136e657
Change validation
leculver Apr 18, 2023
3369bae
Update validation
leculver Apr 18, 2023
d4e30fb
Add registers, fix output
leculver Apr 18, 2023
a2229b1
Remove !dso heading in C++
leculver Apr 18, 2023
7c55f80
Fix dso regexes
leculver Apr 18, 2023
2f239d4
Always print the statistics table
leculver Apr 18, 2023
d1c08e0
Always print dumpheap statistics
leculver Apr 18, 2023
2bd2dd7
Add proper flush check
leculver Apr 18, 2023
45b3e41
Restore previous DumpHeapService behavior
leculver Apr 18, 2023
60817f5
Update ClrMD version
leculver Apr 19, 2023
9a8be84
Code review feedback
leculver Apr 19, 2023
6c7f0ba
TESTONLY: Add !runtimes to get more diagnostics
leculver Apr 19, 2023
1a912a1
TESTONLY: Fix previous command
leculver Apr 20, 2023
9dbb3e3
TESTONLY: Write all warning/errors to normal
leculver Apr 20, 2023
56fe90e
TESTONLY: Printf debugging
leculver Apr 20, 2023
63fb871
Fix DumpStackObject failures. Remove the test only code. Enable sos l…
Apr 21, 2023
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
8 changes: 4 additions & 4 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
<Uri>https://github.com/dotnet/symstore</Uri>
<Sha>0ef70c89b4f9592eade9af090b055fcac3dfd688</Sha>
</Dependency>
<Dependency Name="Microsoft.Diagnostics.Runtime" Version="3.0.0-beta.23214.2">
<Dependency Name="Microsoft.Diagnostics.Runtime" Version="3.0.0-beta.23219.1">
<Uri>https://github.com/microsoft/clrmd</Uri>
<Sha>a85ab0d3e53eb7aef4b3a2f1d595da18342e8696</Sha>
<Sha>80b19b666752ae64301e33f819c39d4279ec0727</Sha>
</Dependency>
<Dependency Name="Microsoft.Diagnostics.Runtime.Utilities" Version="3.0.0-beta.23214.2">
<Dependency Name="Microsoft.Diagnostics.Runtime.Utilities" Version="3.0.0-beta.23219.1">
<Uri>https://github.com/microsoft/clrmd</Uri>
<Sha>a85ab0d3e53eb7aef4b3a2f1d595da18342e8696</Sha>
<Sha>80b19b666752ae64301e33f819c39d4279ec0727</Sha>
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
Expand Down
2 changes: 1 addition & 1 deletion eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
<SystemReflectionMetadataVersion>5.0.0</SystemReflectionMetadataVersion>
<!-- Other libs -->
<MicrosoftBclAsyncInterfacesVersion>6.0.0</MicrosoftBclAsyncInterfacesVersion>
<MicrosoftDiagnosticsRuntimeVersion>3.0.0-beta.23214.2</MicrosoftDiagnosticsRuntimeVersion>
<MicrosoftDiagnosticsRuntimeVersion>3.0.0-beta.23219.1</MicrosoftDiagnosticsRuntimeVersion>
<MicrosoftDiaSymReaderNativePackageVersion>16.9.0-beta1.21055.5</MicrosoftDiaSymReaderNativePackageVersion>
<MicrosoftDiagnosticsTracingTraceEventVersion>3.0.7</MicrosoftDiagnosticsTracingTraceEventVersion>
<MicrosoftExtensionsLoggingVersion>6.0.0</MicrosoftExtensionsLoggingVersion>
Expand Down
16 changes: 11 additions & 5 deletions src/Microsoft.Diagnostics.ExtensionCommands/DumpHeapService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,7 @@ public void PrintHeap(IEnumerable<ClrObject> objects, DisplayKind displayKind, b
Dictionary<ulong, (int Count, ulong Size, string TypeName)> stats = new();

TableOutput thinLockOutput = null;
TableOutput objectTable = new(Console, (12, "x12"), (12, "x12"), (12, ""), (0, ""));
if (!statsOnly && (displayKind is DisplayKind.Normal or DisplayKind.Strings))
{
objectTable.WriteRow("Address", "MT", "Size");
}
TableOutput objectTable = null;

ClrObject lastFreeObject = default;
foreach (ClrObject obj in objects)
Expand Down Expand Up @@ -77,6 +73,15 @@ public void PrintHeap(IEnumerable<ClrObject> objects, DisplayKind displayKind, b
ulong size = obj.IsValid ? obj.Size : 0;
if (!statsOnly)
{
if (objectTable is null)
{
objectTable = new(Console, (12, "x12"), (12, "x12"), (12, ""), (0, ""));
if (displayKind is DisplayKind.Normal or DisplayKind.Strings)
{
objectTable.WriteRow("Address", "MT", "Size");
}
}

objectTable.WriteRow(new DmlDumpObj(obj), new DmlDumpHeap(obj.Type?.MethodTable ?? 0), size, obj.IsFree ? "Free" : "");
}

Expand Down Expand Up @@ -192,6 +197,7 @@ orderby TotalSize
}
else if (displayKind == DisplayKind.Normal)
{
// Print statistics table
if (stats.Count != 0)
{
// Print statistics table
Expand Down
Loading