Goodbye from Dave

Hello to my millions of readers across the world.  Or, well, maybe 10 readers across the world.  Something like that. Anyway, I wanted to let you all know that the CLR Profiling API is shifting ownership to some other fantastic folks on the CLR team.  So after many years of working on this facet of…

10

Writing a Profiler of Windows Store apps

If you’ve written a profiler that consumes the CLR Profiling API, and are looking to update it to analyze Windows Store apps, then you’ll be interested in this new whitepaper: http://go.microsoft.com/fwlink/?LinkID=271485 The whitepaper provides recommendations for all the changes you’ll need to make so your profiler can profile Windows Store apps.  As you read through…

2

New sample code for rewriting IL: ILRewrite Profiler

In my previous post, I mentioned the new home for CLRProfiler, where you can find its latest version, 4.5: http://clrprofiler.codeplex.com/.  On the same CodePlex site you can also find a new sample, ILRewrite.  ILRewrite contains sample code demonstrating the following: Parsing a stream of IL bytes into a linked list of editable structures Writing that…

0

CLRProfiler 4.5 released: includes Windows Store app support

You can find CLRProfiler 4.5 at its new home on CodePlex: http://clrprofiler.codeplex.com/ If you’re interested in using CLRProfiler to diagnose memory issues with your managed app, including managed Windows Store apps, all you need is the CLRProfiler45Binaries download from the Downloads tab.  Please be sure to read the installation instructions first.  You will find a…

3

GC Heap and Alignment Padding

The docs for GetObjectSize have recently been updated with this info, but I wanted to mention it here, too, to ensure you were aware of this information. Some profilers manually advance through objects on the heap, inspecting their field values, by starting at an ObjectID and moving forward by its size to the next ObjectID,…

1

When is it safe to use ObjectIDs?

As mentioned in this post, ObjectIDs are really pointers to managed objects on the GC heap.  And as you know, objects get collected or move around on the heap during GCs.  So how do you safely work with ObjectIDs? The overall guidance is that if you plan to dereference an ObjectID or pass it to…

0

Metadata Tokens, Run-Time IDs, and Type Loading

Overview In this post, I write about the two primary kinds of IDs your profiler deals with, when each kind is appropriate to use, how to convert between those two types of IDs, and some gotchas with those conversions—particularly in how they may invoke the type loader. The two kinds of IDs Profilers have to…

0

ReJIT: A How-To Guide

By now, you’ve surely downloaded your copy of the .NET 4.5 Developer Preview, and you’ve opened up the brand-spanking new corprof.idl, and searched that file for all the new APIs available in 4.5.  There’s a bunch with “ReJIT” in the name, and all you need to know is how and when to call what. If…

1

ReJIT Limitations in .NET 4.5

Anyone who’s read a newspaper in the past few weeks knows that the Profiling API in .NET 4.5 will supported a limited form of ReJIT.  Well, the news might not be that hot, but that’s what I tell myself.  I will be discussing the feature in depth in upcoming posts, but I thought my first…

2

ReJIT for Realz?!

Yes!  Check out this new video on channel 9 for the scoop: https://channel9.msdn.com/Shows/Going+Deep/CLR-45-David-Broman-Inside-Re-JIT In the upcoming .NET 4.5, we do indeed plan to include a limited form of ReJIT that will allow diagnostic tools to perform IL Rewriting after the code has been JITted—by instructing the CLR, via the Profiling API, to JIT the (now…

2