visual studio depurar debuggear compilar como c++ visual-studio-2012 stl visual-studio-debugging

c++ - debuggear - como depurar en visual studio 2017



¿Omitir código STL al depurar código C++ en Visual Studio 2012? (4)

¿Es posible omitir el código STL al usar el depurador C ++ (nativo, x64) en Visual Studio 2012? Muy a menudo, al depurar el código C ++, paso al código STL. Espero que el código STL proporcionado por Microsoft sea correcto (no estoy interesado en depurarlo), solo estoy interesado en depurar mi propio código (escrito por mí mismo).

Para la instalación al establecer un punto de interrupción en esta función:

foo(std::make_shared<int>(6));

donde foo se define como:

void foo(std::shared_ptr<int> x) { // do something }

No quiero sumergirme en los detalles de std :: make_shared; lo que quiero es entrar directamente en la función foo. Pero esto parece no ser posible. Si el punto de interrupción en foo(std::make_shared<int>(6)); se alcanza y presiono el botón ''Step Into'' (o F11); primero entra en el archivo de encabezado de ''memoria'' (STL):

Así que de nuevo tengo que presionar el botón ''Step Out'' que de nuevo el botón ''Step Into'' para entrar en la función foo . Lo que quiero es omitir la inicialización de parámetros relacionados con STL o la posibilidad de saltar directamente a la función.


Con Visual Studio, cuando esté a punto de ingresar a una función, puede hacer clic con el botón derecho en la declaración y seleccionar en un menú en cascada llamado " Paso a lo específico " el destino que desea alcanzar. A continuación, puede omitir copiar constructor / getter / etc. Pasado como argumento a la función. Consulte http://msdn.microsoft.com/en-us/library/7ad07721(v=vs.100).aspx para obtener más información.


Hay Step Into Specific disponible en el menú del botón derecho:

Aunque para un solo argumento, con más frecuencia haré Step Into + Step Out + Step Into desde el teclado en lugar de navegar por los menús de Step Into Specific a Step Into Specific .

En una publicación del blog de MSDN titulada Cómo no incorporarse a las funciones mediante el uso del depurador de Visual C ++ se describe una clave de registro no oficial para pasar sobre un código determinado.


Mueva la llamada STL (make_shared) fuera de foo y pase el resultado a foo. Entonces, el punto de interrupción establecido en la llamada a foo debe estar más allá de ese código STL. De lo contrario, ¿no podrías poner el punto de interrupción dentro de la propia definición de foo?


Solía ​​haber una clave de registro para hacer eso, pero esto ha cambiado en VS2012 :

Visual Studio 2012 (dev11) ¡Todo ha cambiado! Hasta que el equipo de VC ++ ponga algo en su blog (no dude en molestarlos para que hagan esto), eche un vistazo a este archivo:

C:/Program Files[ (x86)]/Microsoft Visual Studio 11.0/Common7/Packages/Debugger/Visualizers/default.natstepfilter

Para VS 2013 y 2015, la configuración de Just my code , conocida de los proyectos .NET, también se amplió para que funcione con C ++ nativo .