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));
{
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);
+ }
}
}
}
{
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
{