Como não dar step into em todo código no Visual Studio 2012 e 2013
Caloni, 2014-08-01 computer blogToda vez que instalo um Visual Studio novo e começo a depurar sempre surge a necessidade de fazê-lo calar a boca nos step intos da STL, Boost, ATL e coisas-que-sei-que-não-vai-dar-pau. (Obviamente, quando dá pau, preciso ir no disassembly e cutucar a STL para ela me entregar qual o problema com o meu contêiner.)
Nas edições antigas da IDE (até o 2010) existia uma configuração no registro para isso. Desde o Visual Studio 2012 isso mudou, e agora existe um arquivo em %programfiles(x86)%\Microsoft Visual Studio 11(ou12).0\Common7\Packages\Debugger\Visualizers chamado default.natstepfilter (gostei do detalhe do "nat": "nat thou step into, little bestard!"). Ele é um XML que já vem preenchido com algumas opções interessante:
<?xml version="1.0" encoding="utf-8"?> <StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010"> <Function> <Name>__security_check_cookie</Name><Action>NoStepInto</Action> </Function> <Function> <Name>__abi_winrt_.*</Name><Action>NoStepInto</Action> </Function> <Function> <Name>_ObjectStublessClient.*</Name><Action>NoStepInto</Action> </Function> <Function> <Name>_Invoke@12</Name><Action>NoStepInto</Action> </Function> <Function> <Name>_RTC_Check(Esp|StackVars)</Name><Action>NoStepInto</Action> </Function> <Function> <Name>_chkstk</Name><Action>NoStepInto</Action> </Function> <Function> <Name>ATL::CComPtrBase.*::operator&</Name><Action>NoStepInto</Action> </Function> <Function> <Name>ATL::CComPtrBase.*::operator-></Name><Action>NoStepInto</Action> </Function> <Function> <Name>ATL::CHeapPtrBase.*::operator&</Name><Action>NoStepInto</Action> </Function> <Function> <Name>ATL::CHeapPtrBase.*::operator-></Name><Action>NoStepInto</Action> </Function> <Function> <Name>ATL::CComBSTR::operator&</Name><Action>NoStepInto</Action> </Function> <Function> <Name>std::forward<.*</Name><Action>NoStepInto</Action> </Function> <Function> <Name>std::move<.*</Name><Action>NoStepInto</Action> </Function> <Function> <Name>Platform::EventSource::Invoke.*</Name><Action>NoStepInto</Action> </Function> <Function> <Name>std::.*</Name><Action>NoStepInto</Action> </Function> <Function> <Name>boost::.*</Name><Action>NoStepInto</Action> </Function> </StepFilter>
Podemos simplesmente adicionar mais duas opções para o parzinho STL/Boost:
<?xml version="1.0" encoding="utf-8"?> <StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010"> <Function><Name>std::.*</Name><Action>NoStepInto</Action></Function> <Function><Name>boost::.*</Name><Action>NoStepInto</Action></Function> </StepFilter>
A boa nova, pelo menos para o Visual Studio 2013, é que agora é possível, se quisermos, entrar nas funções que serão ignoradas:
Eu não sei qual vai ser a próxima novidade do step into, mas para mim, já está bem ótimo.
Fonte: Andy Pennell's Blog (2026-04-02 link quebrado)