Debugging Toolbox

Windbg scripts, debugging and troubleshooting tools and techniques to help you isolate software problems.

Browse by Tags

Tagged Content List
  • Blog Post: Tools for Your Debugging Toolbox

    This article was just updated to include an internal Microsoft tool that is now public. There are many free tools used to troubleshoot and debug software. Below I present a list of the tools that my peers and I use most of the time. Though most of the tools below are free Microsoft tools, not all...
  • Blog Post: [PowerShell Script] PowerDbg v6.0 – Using PowerShell to Control WinDbg

    Last October the latest version of the PowerDbg tool was released, version 6.0. This release has major changes. For example, it is now easier to write scripts or otherwise just hack around the debugger, and includes the PowerDbgConsole, a bootstrapper designed to make setting up an interactive PowerDbg...
  • Blog Post: [PowerShell Script] Troubleshooting for Port Exhaustion Using NetStat

    Problem Description: Applications that use a great deal of TCP network activity may use all of the possible port numbers -- especially if they are very “chatty”. By default, when an application closes a TCP connection, the port number used cannot be reused for the same IP address for another...
  • Blog Post: [PowerShell Script] PowerDbg v5.3—Using PowerShell to Control WinDbg

    This version has a fix in Parse-PowerDbgDSO . Thanks to Igor Dvorkin that found the bug and suggested the fix. DOWNLOAD POWERDBG Download PowerDbg POWERDBG FILES WinDbg.PSM1 ß Starting with this version this is the only file. INSTALLATION WinDbg.PSM1 Goes...
  • Blog Post: [PowerShell Script] Statistics from .NET Applications

    This script is more a template to show you how to use PowerDbg. I must say the idea is from my teammate Aaron Barth! This script collects information from all threads running managed code and gives the user statistics by threads like: - CLR stack. - Managed objects from the stack. ...
  • Blog Post: [PowerShell Script] PowerDbg v5.2—Using PowerShell to Control WinDbg

    This version has two improvements and some scripts were changed to be compatible with this new version: - Starting on version 5.2 the log used to save the command output, enabling the communication between PowerShell and WinDbg is not used anymore. Now all communication uses memory so it’s faster...
  • Blog Post: [PowerShell Script] PowerDbg v5.1—Using PowerShell to Control WinDbg

    So, here we go again. This is a minor version with a few new cmdlets. These new cmdlets are those that we use most of the time. DOWNLOAD POWERDBG Download PowerDbg POWERDBG FILES WinDbg.PSM1 ß Contains cmdlets used to communicate with WinDbg . Microsoft.PowerShell_Profile...
  • Blog Post: [PowerShell Script] PowerDbg v5.0—Using PowerShell to Control WinDbg

    I’m very excited to present the new PowerDbg v5.0! There’s just one change, but it’s a HUGE change that makes PowerDbg extremely fast and easier to use. Let me explain: Send-PowerDbgCommand is the heart of PowerDbg . This is the cmdlet that sends information to WinDbg and retrieves information...
  • Blog Post: [PowerShell Script] Finding Out the Managed Objects that "Leaked"

    Here in PFE most of my teammates use the same approach to identify managed objects that “leak”. The idea is to run !DumpHeap –stat once, wait several minutes to allow the “leak” to make itself evident, then run the command a second time. After that you have to select those objects that appear in both...
  • Blog Post: [PowerShell Script] Extracting All Key/Value Pairs from a Dictionary Object

    Brad Linscott, a teammate of mine since the old times of SIE , came up with a very helpful idea: find an automated way to get the key/value pairs from a Dictionary object. Moreover, Brad has a recipe that teaches how to get the key/value pair from a Dictionary using a manual approach, either using...
  • Blog Post: [PowerShell Script] Chart and Statistics from Top 20 Objects Leaking

    If you want to know the top 20 objects associated with the GC Handles that are leaking, you have manual work to do. Think about it: a) Run GCHandleLeaks and wait… it’s going to take time. b) Get the objects’ instances from the handles. c) Count and classify them. d) Get the 20 objects that...
  • Blog Post: [PowerShell Script] PowerDbg v4.0 - Using PowerShell to Control WinDbg

    Good news! Here’s the newest PowerDbg library. This version is more stable and has more features. Let me tell you about them and how to install it. New Features - Send-PowerDbgCTRL-BREAK / Send-PowerDbgResumeExecution If you’re wondering why do you need these cmdlets I can see at least...
  • Blog Post: [PowerShell Script] Downloading PDB for Specific Modules

    A few weeks ago, during a laboratory with a customer, I found myself struggling to download the public symbol from a specific driver. Since driver is Kernel Mode if you get a User Mode dump from the application using the driver, you won’t be able to actually see and download the driver. If you have a...
  • Blog Post: [PowerShell Script] Displaying the Top 5 Exceptions and Up to 5 Different Call Stacks For Each Exception

    During a lab I had about a month ago, one of my colleagues, Tag, whom I had opportunity to mention in a previous post, asked me if I could create a PowerShell script that displays statistics of exceptions, with call stacks included. For me it sounded like a neat idea because sometimes !DumpAllExceptions...
  • Blog Post: [PowerShell Script] PowerDbg v3.1 - Using PowerShell to Control WinDbg

    This new version has one more parser for !PrintException and a killer feature that my colleagues and myself have wanted since the beginning: PowerDbg, more specifically Send-PowerDbgCommand , which now has the ability to wait until a command finished its execution. It means no more delays to wait for...
  • Blog Post: [PowerShell Script] Displaying the Call Stack for Inner and Hidden Exceptions

    This script automates a technique I’ve been using for a long time whenever I need to see the stack for exceptions hidden in a call stack and if you are like me, you prefer to use an automated approach rather than a manual approach. I’m not going to write the technique here because Mike Stall has already...
  • Blog Post: [PowerShell Script] Isolating the Threads Consuming High CPU

    When helping my customers with scenarios in which the symptom is high CPU, I very often end up with only a dump file from the application consuming high CPU and nothing else. When you have a high CPU scenario and you have dump files, you need a Performance Monitor log in order to see the threads consuming...
  • Blog Post: [PowerShell Script] PowerDbg v2.3 - Using PowerShell to Control WinDbg

    It has been a while since my previous blog post. I’ve been busy with other tasks, including the new PowerDbg version 2.3. There’s a lot of new stuff on this new version and my estimate is that about 80% of the most used Windbg commands have been covered so far. J Let me present the new cmdlets...
  • Blog Post: [PowerShell Script] Saving a Module from a .NET Method Call

    This is my first script using the PowerDbg functions. It’s a good example of how to use PowerDbg to build your own scripts. PowerDbgScriptSaveModule . ps1 is the PowerShell version of my Windbg script Save_Module.txt Actually it does more than the previous version: it automatically saves the...
  • Blog Post: [PowerShell Script] PowerDbg – Using PowerShell to Control WinDbg

    [Note: According to Lee Holmes (one of the PowerShell creators) recommendation I changed the name convention. The images were not updated.] Sometime ago a colleague of mine, Vandy Rodrigues, from the Messaging team, was enthusiastic to tell me about PowerShell and why I should learn it. I must...
Page 1 of 1 (20 items)