Skip to content

Commit 86ea5fb

Browse files
author
Christophe Nasarre
committed
- Add ParallelStacks.Runtime assembly to build and render parallel stacks
- Support attaching to a live process on Windows (should work on Linux when ClrMD is fixed - upgrade to last version of ClrMD (1.1.0.35504)
1 parent 4061a2c commit 86ea5fb

33 files changed

+709
-563
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# ParallelStacks.Runtime
2+
3+
This .NET library allows you to compute and display the merged threads call stacks à la Visual Studio "Parallel Stacks".
4+
It supports memory dumps and live processes (on Windows only).
5+
6+
## Platforms
7+
Windows and Linux.
8+
Note that it is not possible to attach to a live process on Linux (depends on fixes to be done in ClrMD)

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
The few "debugging extensions" that have been created at Criteo to help post-mortem .NET applications analysis are now available:
33

44
- as a [stand alone tool](./Documentation/ClrMDStudio.md) to load a .NET application memory dump and start automatic thread, thread pool, tasks and timer analysis.
5-
[zip](./binaries/ClrMDStudio-1.5.1_x64.zip)
5+
[zip](./binaries/ClrMDStudio-1.5.2_x64.zip)
66
- as a [WinDBG extension](./Documentation/gsose.md) to get the same level of details plus more commands such as getting a method signature based on its address.
7-
[zip](./binaries/gsose-1.5.3_x64.zip)
7+
[zip](./binaries/gsose-1.6.1_x64.zip)
88
- as a [.NET Core console tool](./Documentation/pstacks.md) to load a .NET application memory dump and show merged threads call stack à la Visual Studio "parallel stacks" (works also on Linux).
9-
[zip](./binaries/pstacks-1.0.1.zip)
9+
[zip](./binaries/pstacks-1.1.zip)
10+
- as a [.NET standard assembly](./Documentation/parallelStacks.Runtime.md) to build and render parallel stacks from a memory dump file or a live process (on Windows only).
11+
[zip](./binaries/ParallelStacks.Runtime-1.0.zip)
1012

1113
More analyzers and commands will be added as needed.
1214

@@ -46,8 +48,9 @@ The `DebuggingExtensions` Visual Studio 2017 solution contains three projects:
4648

4749
2. `gsose`: "***G**rand **S**on **O**f **S**trike **E**xtension*" for WinDBG that exposes the same commands (and more)
4850

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

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

5255

5356
These projects depends on Nuget packages:

binaries/ClrMDStudio-1.5.1_x64.zip

-580 KB
Binary file not shown.

binaries/ClrMDStudio-1.5.2_x64.zip

781 KB
Binary file not shown.
9.23 KB
Binary file not shown.

binaries/gsose-1.6.1_x64.zip

491 KB
Binary file not shown.

binaries/gsose-1.6_x64.zip

-484 KB
Binary file not shown.

binaries/pstacks-1.0.1.zip

-281 KB
Binary file not shown.

binaries/pstacks-1.1.zip

13.4 KB
Binary file not shown.

src/ClrMDStudio/ClrMDStudio.csproj

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,22 @@
1818
<SccLocalPath>SAK</SccLocalPath>
1919
<SccAuxPath>SAK</SccAuxPath>
2020
<SccProvider>SAK</SccProvider>
21+
<TargetFrameworkProfile />
22+
<IsWebBootstrapper>false</IsWebBootstrapper>
23+
<PublishUrl>publish\</PublishUrl>
24+
<Install>true</Install>
25+
<InstallFrom>Disk</InstallFrom>
26+
<UpdateEnabled>false</UpdateEnabled>
27+
<UpdateMode>Foreground</UpdateMode>
28+
<UpdateInterval>7</UpdateInterval>
29+
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
30+
<UpdatePeriodically>false</UpdatePeriodically>
31+
<UpdateRequired>false</UpdateRequired>
32+
<MapFileExtensions>true</MapFileExtensions>
33+
<ApplicationRevision>0</ApplicationRevision>
34+
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
35+
<UseApplicationTrust>false</UseApplicationTrust>
36+
<BootstrapperEnabled>true</BootstrapperEnabled>
2137
</PropertyGroup>
2238
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
2339
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -81,10 +97,10 @@
8197
</PropertyGroup>
8298
<ItemGroup>
8399
<Reference Include="DynaMD, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
84-
<HintPath>..\packages\DynaMD.1.0.7.1\lib\net452\DynaMD.dll</HintPath>
100+
<HintPath>..\packages\DynaMD.1.0.7.3\lib\net452\DynaMD.dll</HintPath>
85101
</Reference>
86-
<Reference Include="Microsoft.Diagnostics.Runtime, Version=1.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
87-
<HintPath>..\packages\Microsoft.Diagnostics.Runtime.1.0.2\lib\net45\Microsoft.Diagnostics.Runtime.dll</HintPath>
102+
<Reference Include="Microsoft.Diagnostics.Runtime, Version=1.1.0.35504, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
103+
<HintPath>..\packages\Microsoft.Diagnostics.Runtime.1.1.35504\lib\net45\Microsoft.Diagnostics.Runtime.dll</HintPath>
88104
</Reference>
89105
<Reference Include="ParallelExtensionsExtras, Version=1.2.3.0, Culture=neutral, PublicKeyToken=665f4d61f853b5a9, processorArchitecture=MSIL">
90106
<HintPath>..\packages\ParallelExtensionsExtras.1.2.0.0\lib\net40\ParallelExtensionsExtras.dll</HintPath>
@@ -95,8 +111,8 @@
95111
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
96112
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
97113
</Reference>
98-
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
99-
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\net461\System.ValueTuple.dll</HintPath>
114+
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
115+
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
100116
</Reference>
101117
<Reference Include="System.Xml" />
102118
<Reference Include="Microsoft.CSharp" />
@@ -209,6 +225,18 @@
209225
<ItemGroup>
210226
<Resource Include="Panes\GCMemory.png" />
211227
</ItemGroup>
228+
<ItemGroup>
229+
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
230+
<Visible>False</Visible>
231+
<ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName>
232+
<Install>true</Install>
233+
</BootstrapperPackage>
234+
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
235+
<Visible>False</Visible>
236+
<ProductName>.NET Framework 3.5 SP1</ProductName>
237+
<Install>false</Install>
238+
</BootstrapperPackage>
239+
</ItemGroup>
212240
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
213241
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
214242
Other similar extension points exist, see Microsoft.Common.targets.

0 commit comments

Comments
 (0)