2012-04-17 5 views
2

Во время отладки я часто нажимаю F11, чтобы войти в функцию. Для этого проекта я использую свойства everwhere, который является просто оболочкой RAII, которая проверяет, установил ли я переменную и дал ли я утверждение, если я этого не сделал. Это было полезно.Скажите визуальной студии, чтобы пропустить?

Однако теперь отладка раздражает, так как F11 войдет в собственность. Могу ли я это пропустить? путем написания атрибутов, ключевых слов или чего-либо еще?

Я использую VS11beta

+0

Это управляемый или неуправляемый код? –

+0

@CodyGray: oops, я забыл пометить его. Его использование неуправляемого C++ –

+0

Вы имеете в виду F10? –

ответ

3

Это довольно легко установить, когда вы имеете дело с управляемым кодом. Вы можете вручную отметить функцию классом DebuggerHiddenAttribute и даже включить встроенные параметры отладчика, такие как «Шаг над свойствами и операторы».

К сожалению, автоматическое переключение на определенную функцию не поддерживается Visual Studio для собственного кода на C++. (По крайней мере, он не поддерживался до VS 2010 года - у меня не было достаточно времени, чтобы поиграть с VS 11, чтобы увидеть, действительно ли это то, что они нам дали, чтобы компенсировать тот факт, что они украли все наши цвета.)

Там есть обходной путь, хотя, документально долгое время назад в блоге Энди Пеннелл в:
How to Not Step Into Functions using the Visual C++ Debugger

по сути, вы измените следующий раздел реестра (для VS 2010):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NativeDE\StepOver 

или для 64-разрядных приложений:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\NativeDE\StepOver 

, чтобы указать регулярное выражение, которое будет отслежено от функций отладчиком.

Например, если вы не хотите, чтобы отладчик шаг в перегруженных операторов, вы можете использовать следующее выражение:

\scope:operator\oper:=NoStepInto 

В оговорке в блоге говорит:

Это не документированная функция. Ну, очевидно, вы читаете эту «документацию» прямо здесь, но я имею в виду, что это не гарантируется, поскольку она никогда не была официально протестирована, но не поддерживается Microsoft. Его существование в будущих версиях или обновление до текущих версий не гарантируется.

+0

По-видимому, синтаксис для раздела реестра изменился в VS2010. Теперь вам нужно использовать что-то вроде 'boost \: \: shared_ptr. *', Чтобы не переходить в 'boost :: shared_ptr. *' (Взято из [здесь] (http://kennyknecht.blogspot.com/2010/05/ зрительно-студия-2010-nostepinto.html)) – Praetorian

Смежные вопросы