int x1 = somefunc( a.c_str(), b.c_str(), somefunc2( c.c_str() ) );При нажатии F11(StepInto) отладчик попадает с функцию c_str для первого аргумента, потом второго и так далее. И только потом в SomeFuct. Visual Studio позволяет в каждом случе войти в жалаемую функцию с помощью контекстного меню, как показано на рисунке:
Однако, не всегда удобно каждый раз пользоваться меню. На этот случай в IDE присутсвует недокументированная возможность задать правило перехода по функциям. Конфигурация NoStepInto хранится в реестре в разделе HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\NativeDE\StepOver. Там можно создать новые строки, которые описывают выражения, куда "не нужно заходить". Примеры:
Не заходить в функции класса CString:
1 \scope:CString.*\:\:.*=NoStepIntoНе входить в перегруженные операторы:
10 \scope:operator\oper:=NoStepIntoНе заходить в ATL:: кроме функций CComBSTR,
которые не являются операторами:
20 ATL\:\:CComBSTR::\funct:=StepIntoНе заходить в шаблоны, кроме случаев когда это
10 ATL\:\:.*=NoStepInto
шаблонные функции обычного класса:
20 \scope:\funct:=StepInto
10 .*[\<\>].NoStepInto
Дополнительную информацию по этой теме можно найти тут.