Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.

NoStepInto not working in VS.NET ?

Skip to first unread message

Michal Bacik

Jan 13, 2003, 5:54:59 AM1/13/03
I'm slowly moving to .NET version of Visual Studio, porting all my behaviors
from MSVC 6.0.
Anyway, when I edit autoexp.dat file, the [ExecutionControl] section seems
not to work anymore.

I've used this:
C_str::* = NoStepInto
Anyway debugger always steps into C_str class' methods.

I know this is undocumented, but automatic expansion in the autoexp.dat
works fine on .NET.
Any idea how to prevent debugger stepping into specific functions/classes?
- Michal

Bill Boris [MSFT]

Jan 13, 2003, 3:55:29 PM1/13/03
Its still there, just moved into the registry

"Michal Bacik" <> wrote in message

Bill Boris [MSFT]

Jan 13, 2003, 3:56:52 PM1/13/03
It's been moved to the registry




"Michal Bacik" <> wrote in message

Michal Bacik

Jan 16, 2003, 6:00:30 AM1/16/03

could you describe the syntax please, or point to some more information? I
discovered I have to create string keys with arbitrary names, but the syntax
has changed since MSVC 6.
What does those dots in front and back of ".*CString.*" mean? And what about
the asterisks? Also you could post more examples with description of what
they filter out.

Thanks a lot.
- Michal

"Bill Boris [MSFT]" <> wrote in message

Visual C# Team

Jan 20, 2003, 5:07:37 PM1/20/03
The syntax is based on normal VS regular expressions, as used in the Find
dialog. The strings below look overly complicated because they are the
contents of a REG file, and it needs extra escapes over and above the regex

The regex string .*CString.* means zero or more of any char, CString, then
zero or more of any char, i.e. any function name with CString anywhere in

The ATL regex string is ATL\:\:.* - the colons have to be escaped for regex
reasons. The double escaping is required as this example came from a REG
file. This string means ATL, then two colons, then zero or more of any char.

Remember this feature is not officially documented or supported.

This posting is provided "AS IS" with no warranties, and confers no rights

"Michal Bacik" <> wrote in message


Garner Halloran

Jan 29, 2003, 11:31:21 AM1/29/03
I had over 50 custom NoStepInto lines in my autoexp.dat. I tried adding
them to the registry for .NET, but the same syntax isn't working. We
have a ton of singleton's and we don't like to step into the "Get"
function so an example of what I had in the autoexp.dat is:


My registry entry looks like:


Doesn't work.

2 other things that didn't work:


Any ideas?

For testing this I would close down .NET, click on the .reg file I
created. I clicked OK to enter it into the registry. I checked to make
sure it put it in there correctly. Then I ran .NET, loaded up my
project, ran it and tried to step into a function.

And the header I'm using for the .reg file is:

Windows Registry Editor Version 5.00


Visual C# Team

Jan 30, 2003, 5:45:19 PM1/30/03

There's a little more to the syntax than just what Andy describes. Here's
the comment from the source code:

We read the inclusion/exclusion list from the registry at

Each string value in that RegKey should have a decimal number for its name
and a
value in the following format:


Where RegExp is a regular expression per the standard Visual Studio
expression format, with the following additional escapes:

\cid: A C/C++ identifier
\funct: A C/C++ function name
\scope: A set of class/namespace specifiers for a function (i.e.,
\anything: any string
\oper: a C/C++ operator

Due to an oversight, the items are evaluated in descending numeric
order instead of ascending order: the '20' rule will match before
'10'. The first matching rule is used. If no matching rule is
found, we step into. (i.e., there is an assumed entry of
MAX_INT \anything:=StepInto


Don't step into members of CString[AWT], etc.:

1 \scope:CString.*\:\:.*=NoStepInto

Don't step into overloaded operators:

10 \scope:operator\oper:=NoStepInto

Don't step into ATL:: except for CComBSTR's non-operator members:

20 ATL\:\:CComBSTR::\funct:=StepInto
10 ATL\:\:.*=NoStepInfo

Don't step into templated things, unless they're merely templated
functions in a non-templated class:

20 \scope:\funct:=StepInto
10 .*[\<\>].*=NoStepInto


This posting is provided "AS IS" with no warranties, and confers no rights

"Visual C# Team" <> wrote in message

Visual C# Team

Jan 30, 2003, 5:49:23 PM1/30/03
Hi Garner,

Here's what you should check:
1. Make the numbers unique for each entry
2. Make sure you have two \\ in .reg files, which makes one \ in regedit.
3. If items are in a namespace, and you used 'using' on that namespace, you
still need the full namespace in the entry:

Try using just a very single simple entry, for a simple function, and add
complexity as you go, until you get what you want.

Also, take a look at my other post from 5 minutes ago with the
"documentation" for this "feature". "thanks".


This posting is provided "AS IS" with no warranties, and confers no rights

"Garner Halloran" <> wrote in message

Garner Halloran

Jan 31, 2003, 12:50:46 PM1/31/03
Thanks for the info and the other great post with some documentation!

For my example, I got my Get function to work as:


I'm still having trouble excluding specific overloaded operators in my
own classes. Since it's such a pain to test this, I'll see if anyone
can help:

I have a string class with an overloaded operator[]. Here is what I've


All to no avail. And I'm not looking forward to figuring out how to not
step into operator[] on our templated array class :)

Garner Halloran

Feb 10, 2003, 10:40:54 AM2/10/03
In case this helps someone in the future, here is what I did for my
templated array class:


That makes it so you don't step into any overloaded operators. If
anyone else has any other classes they want to share, this might be a
good thread to post it to.

0 new messages