PowerDbg Version 6
With this release we're really focusing on making PowerDbg (and by extension WinDbg) as easy to use as possible, whilst at the same time enabling a much richer debugging experience that really leverages the power of PowerShell.
Grab the 22.214.171.124 release from Downloads, or grab a 'bleeding edge' build from source control under .\dev\out\Modules
- Wherever possible we now returned structured (PSObject) data from commands, that can be filtered, pilelined etc... The CSV file is depricated. The raw output from a command can always be retrieved with the -raw switch.
- Cmdlet aliases to reflect the WinDbg experience as closely as possible
- Both 32 and 64 bit support for implemented cmdlets (nb: WOW64 not supported this release)
- Bundled sample debugging scenarios, that can be built and used for training purposes (these actually form the basis of our integration tests)
- PowerDbgConsole - provides a really easy way to get a PowerDbg session up and running against a process or an existing memory dump. Optional whether WinDbg UI is shown (remote mode) or whether whole session runs against (hidden) CDB process.
- (TODO) Caching when debugging against a dump, so re-executing the same command is much faster.
We've also now got a 'build' process that makes it easier for us to develop new commands, but that's more a housekeeping thing.
It's the intent
that all existing v5 scripts should still run as-is. This will need testing however...
After a bit of tooing and fro-ing over this we are going to genuinely PowerShell-ize the cmdlet names (so !dumpobject =
, !threads = Get-DbgClrThreads
). As much as anything there is considerable advantage in being able to type 'help *Dgb' and see all the cmdlets that we've exposed.
The cmdlet names will still reflect (as much as possible) the underlying SOS / PSSCOR2 command names, in many cases just with the 'dump' prefix stripped off.
functions (not exposed on the module interface) will tend to reflect more the name of the WinDBG command / extension that they are operating with. For example
uses a function called Parse-DumpObject
(get-command -module WinDbg)
Anything without a hyperlink is proposed and has not been implemented. This list may change, and reflects us doing our laundry in public.
These map 1:1 with an underlying WinDbg / SOS command, and will typically have an alias that matches the original WinDbg command.
These combine multiple debugger commands to save time and facilitate analysis.
||Gets the objects contained in a managed dictionary, by traversing the backing array
||Gets the objects contained in a managed List<T>, by traversing the backing array
||Provides more detail on thread activity, including CPU time, locks held, COM apartment model and current state