StepOver Revisited

Andy Pennell exposed in 2004 (and I mentioned in 2009) a very useful undocumented VC feature: when you wish to avoid stepping into nagging functions (ctors, refcounts, whatever), you can specify them in the StepOver registry key. It supports RegExp’s and some extra syntax, so it was very convenient to specify entire framework classes and namespaces (ATL, MFC, std etc) and save many clicks during debugging.

As the case often turns out for undocumented goodies, the feature started showing some cracks in VS2010. Here is one very noticeable such crack.

When you have two or more VS instances running, they’re likely to compete over access to system resources. As of VS2010, when instances compete over the registry key –


…there’s a good chance it would be duplicated, with a suffix containing one of the instances’ process ID:


However, since access to the original key had failed – the new copy is not an exact duplicate and probably just contains some defaults (which brings up the question of why duplicate it in the first place, but I assume there’s a valid reason).

So there you have it – once such a race occurs, one of the VS instances would be blind to all the customizations you had put into 10.0_Config\NativeDE\StepOver, and you’d be back wasting dozens of clicks stepping in and out of std::shared_ptr copy ctors.

This seems easily fixable, but since it was an underground feature to start with – testing it was probably never part of any requirement for VS2010. Hope it makes it back some day.

This entry was posted in Debugging, VC++. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s