CrashDrive.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <SelectionSets>
    <SelectionSet>
      <Name>CrashDriveEntries</Name>
      <Types>
        <TypeName>CrashDrive.Models.FolderItem</TypeName>
        <TypeName>CrashDrive.Models.FileItem</TypeName>
      </Types>
    </SelectionSet>
  </SelectionSets>
  <ViewDefinitions>

    <!-- Unified folder+file listing: Mode column distinguishes via 'd' / '-' -->
    <View>
      <Name>CrashDriveEntry</Name>
      <ViewSelectedBy>
        <SelectionSetName>CrashDriveEntries</SelectionSetName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>Mode</Label><Width>5</Width></TableColumnHeader>
          <TableColumnHeader><Label>Count</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Name</Label></TableColumnHeader>
          <TableColumnHeader><Label>Description</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>if ($_ -is [CrashDrive.Models.FolderItem]) { 'd----' } else { '-a---' }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_ -is [CrashDrive.Models.FolderItem]) { $_.Count } else { $null }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Description</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>EventItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.EventItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>Seq</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Type</Label></TableColumnHeader>
          <TableColumnHeader><Label>Depth</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Line</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Summary</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Seq</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Type</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Depth</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Line</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Summary</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ExceptionItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.ExceptionItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>#</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Seq</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Line</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Exception</Label></TableColumnHeader>
          <TableColumnHeader><Label>Function</Label></TableColumnHeader>
          <TableColumnHeader><Label>Message</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Index</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Seq</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Line</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ExceptionType</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Function</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Message</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ThreadItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.ThreadItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>MgdId</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>OSId</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Frames</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Flags</Label></TableColumnHeader>
          <TableColumnHeader><Label>Exception</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>ManagedThreadId</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>OSThreadId</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>FrameCount</PropertyName></TableColumnItem>
              <TableColumnItem><ScriptBlock>($(if ($_.IsAlive){'A'}else{'.'}) + $(if ($_.IsFinalizer){'F'}else{'.'}))</ScriptBlock></TableColumnItem>
              <TableColumnItem><PropertyName>ExceptionSummary</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>FrameItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.FrameItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>#</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Kind</Label></TableColumnHeader>
          <TableColumnHeader><Label>IP</Label></TableColumnHeader>
          <TableColumnHeader><Label>Method</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Index</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Kind</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>IpHex</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Method</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>TtdEventItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.TtdEventItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>#</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Position</Label></TableColumnHeader>
          <TableColumnHeader><Label>Type</Label></TableColumnHeader>
          <TableColumnHeader><Label>Module</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Index</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Position</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Type</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Module</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>TtdCallItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.TtdCallItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>#</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Thread</Label></TableColumnHeader>
          <TableColumnHeader><Label>Entry</Label></TableColumnHeader>
          <TableColumnHeader><Label>Exit</Label></TableColumnHeader>
          <TableColumnHeader><Label>Return</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Index</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ThreadId</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>TimeStart</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>TimeEnd</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ReturnValue</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>TtdPositionFrameItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.TtdPositionFrameItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>#</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Frame</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Index</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Frame</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>TtdMemoryItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.TtdMemoryItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>#</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Position</Label></TableColumnHeader>
          <TableColumnHeader><Label>Op</Label></TableColumnHeader>
          <TableColumnHeader><Label>Address</Label></TableColumnHeader>
          <TableColumnHeader><Label>Value</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Index</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Position</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>AccessType</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Address</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Value</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>HeapTypeItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.HeapTypeItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>Count</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Bytes</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>Type</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>InstanceCount</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>TotalBytes</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>TypeName</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ModuleItem</Name>
      <ViewSelectedBy>
        <TypeName>CrashDrive.Models.ModuleItem</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>Directory</PropertyName>
      </GroupBy>
      <TableControl>
        <AutoSize/>
        <TableHeaders>
          <TableColumnHeader><Label>Kind</Label></TableColumnHeader>
          <TableColumnHeader><Label>Size</Label><Alignment>Right</Alignment></TableColumnHeader>
          <TableColumnHeader><Label>ImageBase</Label></TableColumnHeader>
          <TableColumnHeader><Label>Name</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><ScriptBlock>if ($_.IsManaged) { 'mgd' } else { 'native' }</ScriptBlock></TableColumnItem>
              <TableColumnItem><PropertyName>Size</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ImageBaseHex</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>FileName</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

  </ViewDefinitions>
</Configuration>