Add verbose info to clrmodules command. (#712)
authorMike McLaughlin <mikem@microsoft.com>
Thu, 19 Dec 2019 00:53:10 +0000 (16:53 -0800)
committerGitHub <noreply@github.com>
Thu, 19 Dec 2019 00:53:10 +0000 (16:53 -0800)
Add version info to modules command.

src/SOS/Strike/strike.cpp
src/Tools/dotnet-dump/Commands/ClrModulesCommand.cs
src/Tools/dotnet-dump/Commands/ModulesCommand.cs

index 05e399a9148a34c0bb70bc8af9a05d1505fb1de1..acd6d3d6363966227cf79c9cbc18250c765fd405 100644 (file)
@@ -6030,6 +6030,7 @@ DECLARE_API(DumpModule)
 
     ExtOut("PEFile:                  %p\n", SOS_PTR(module.File));
     ExtOut("ModuleId:                %p\n", SOS_PTR(module.dwModuleID));
+    ExtOut("ModuleIndex:             %p\n", SOS_PTR(module.dwModuleIndex));
     ExtOut("LoaderHeap:              %p\n", SOS_PTR(module.pLookupTableHeap));
     ExtOut("TypeDefToMethodTableMap: %p\n", SOS_PTR(module.TypeDefToMethodTableMap));
     ExtOut("TypeRefToMethodTableMap: %p\n", SOS_PTR(module.TypeRefToMethodTableMap));
index fe44d534dca75c238a318119314df0d37a0011ed..04b711883bbe81c65afa23f797d32477861edf99 100644 (file)
@@ -14,11 +14,31 @@ namespace Microsoft.Diagnostics.Tools.Dump
     {
         public ClrRuntime Runtime { get; set; }
 
+        [Option(Name = "--verbose", Help = "Displays detailed information about the modules.")]
+        [OptionAlias(Name = "-v")]
+        public bool Verbose { get; set; }
+
         public override void Invoke()
         {
             foreach (ClrModule module in Runtime.Modules)
             {
-                WriteLine("{0:X16} {1}", module.Address, module.FileName);
+                if (Verbose)
+                {
+                    WriteLine("{0}", module.FileName);
+                    WriteLine("    Name:            {0}", module.Name);
+                    WriteLine("    ImageBase:       {0:X16}", module.ImageBase);
+                    WriteLine("    Size:            {0:X8}", module.Size);
+                    WriteLine("    Address:         {0:X16}", module.Address);
+                    WriteLine("    IsFile:          {0}", module.IsFile);
+                    WriteLine("    IsDynamic:       {0}", module.IsDynamic);
+                    WriteLine("    MetadataAddress: {0:X16}", module.MetadataAddress);
+                    WriteLine("    MetadataSize:    {0:X16}", module.MetadataLength);
+                    WriteLine("    PdbInfo:         {0}", module.Pdb?.ToString() ?? "<none>");
+                }
+                else
+                {
+                    WriteLine("{0:X16} {1:X8} {2}", module.ImageBase, module.Size, module.FileName);
+                }
             }
         }
     }
index ecf97ff19802f1812448465d686a7cb6660c2ba1..1613ecf98df993f4240a4558b98ce6fa478d0722 100644 (file)
@@ -28,12 +28,14 @@ namespace Microsoft.Diagnostics.Tools.Dump
                 {
                     WriteLine("{0}", module.FileName);
                     WriteLine("    Address:   {0:X16}", module.ImageBase);
+                    WriteLine("    IsManaged: {0}", module.IsManaged);
                     WriteLine("    FileSize:  {0:X8}", module.FileSize);
                     WriteLine("    TimeStamp: {0:X8}", module.TimeStamp);
+                    WriteLine("    Version:   {0}", module.Version);
+                    WriteLine("    PdbInfo:   {0}", module.Pdb?.ToString() ?? "<none>");
                     if (module.BuildId != null) {
                         WriteLine("    BuildId:   {0}", string.Concat(module.BuildId.Select((b) => b.ToString("x2"))));
                     }
-                    WriteLine("    IsManaged: {0}", module.IsManaged);
                 }
                 else
                 {