GithubHelp home page GithubHelp logo

chrisnas / debuggingextensions Goto Github PK

View Code? Open in Web Editor NEW
210.0 7.0 21.0 4.55 MB

Host of debugging-related extensions such as post-mortem tools or WinDBG extensions

License: MIT License

C# 100.00%
clrmd windbg-extension windbg threadpool timer garbage-collector sos

debuggingextensions's Introduction

DebuggingExtensions

The few "debugging extensions" that have been created at Criteo to help post-mortem .NET applications analysis are now available:

  • as a stand alone tool to load a .NET application memory dump and start automatic thread, thread pool, tasks and timer analysis. zip

  • as a WinDBG extension to get the same level of details plus more commands such as getting a method signature based on its address. zip

  • as a .NET Core console tool to load a .NET application memory dump and show merged threads call stack ร  la Visual Studio "parallel stacks" (works also on Linux) zip. Note that you could install it as a global CLI tool

    • "dotnet tool install --global dotnet-pstacks" to install it
    • "dotnet pstacks <pid or .dmp file path>" to get your parallel stacks
  • as a .NET standard assembly to build and render parallel stacks from a memory dump file or a live process (on Windows only). zip More analyzers and commands will be added as needed.

  • as a GUI tool first published in 2011 to chase .NET memory leaks. The source code is now available and dumps are droppable into the snapshot listview to compare them automatically.

  • as a .NET Core console tool to analyze duplicated strings in a .NET application (live/memory dump) (works also on Linux) Note that you could install it as a global CLI tool

    • "dotnet tool install --global dotnet-dstrings" to install it
    • "dotnet dstrings <pid or .dmp file path>" to get the statistics

Introduction

Most of the code is detailed in the blog series related to ClrMD:

Part 1: Bootstrap ClrMD to load a dump.

Part 2: Find duplicated strings with ClrMD heap traversing.

Part 3: List timers by following static fields links.

Part 4: Identify timers callback and other properties.

Part 5: Use ClrMD to extend SOS in WinDBG.

Part 6: Manipulate memory structures like real objects.

Part 7: Manipulate nested structs using dynamic.

Part 8: Spelunking inside the .NET Thread Pool.

Part 9: Deciphering Tasks and Thread Pool items.

part 10: Getting another view on thread stacks with ClrMD

The detailed features are available either as a stand alone tool or a WinDBG extension. More commands will be added as needed.

Source Code

The DebuggingExtensions Visual Studio 2017 solution contains three projects:

  1. ClrMDStudio: WPF application that loads a dump file on which commands to be executed

  2. gsose: "Grand Son Of Strike Extension" for WinDBG that exposes the same commands (and more)

  3. pstacks: .NET Core console application that loads a dump file (+ attachs to a live process on Windows) and shows merged parallel stacks

  4. ParallelStacks.Runtime: .NET Assembly (and available as a nuget too) to let you build and render parallel stacks from your own code

  5. LeakShell: .NET WinForms application to easily spot leaky class instances

  6. dstrings: .NET Core console application that displays duplicated strings statistics

These projects depends on Nuget packages:

  • ClrMD: C# library to explore dump files.
  • DynaMD: C# dynamic-based helpers on top of ClrMD.
  • ClrMDExports: Helper to write WinDBG/LLDB extensionss on top of ClrMD.

debuggingextensions's People

Contributors

chrisnas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

debuggingextensions's Issues

Cannot load gsose.dll

Hi there, thanks for creating the tools first.

I encountered the following error. Could you please take a look?

0:006> .load C:\Repos\DebuggingExtensions\binaries\gsose-1.6.1_x64\gsose.dll
The call to LoadLibrary(C:\Repos\DebuggingExtensions\binaries\gsose-1.6.1_x64\gsose.dll) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

Possible to download just the binaries?

I just downloaded the project and got many compilation errors, so before spending time trying to fix it, is that possible to download the binaries only? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.