Si tengo una variable std::vector
o , y quiero ver el contenido, es un gran dolor ver el enésimo elemento mientras se depura. ¿Hay algún complemento o algún truco para facilitar la visualización de las variables del contenedor STL al depurar (VS2003/2005/2008)
?Inspeccionar contenedores STL en la depuración de Visual Studio
Respuesta
Para los vectores, este thread en los foros msdn tiene un fragmento de código para configurar un reloj en un índice vectorial que podría ayudar.
Visual Studio 2008, al menos para mí, muestra el contenido de los contenedores STL en el cuadro de contenido de mouseover estándar.
Yo también y estoy seguro VS2 005 hizo lo mismo. – Rob
Se puede crear un visualizador de encargo mira esto: http://www.virtualdub.org/blog/pivot/entry.php?id=120
También puede hacer clic en cualquier valor en su reloj, y seleccione 'Add Watch'. Esto puede ser útil si solo necesita mirar un elemento de un mapa o conjunto.
También conduce a la solución que christopher_f publicada por vectores - ((v) ._ MyFirst) [índice]
Si quiere ver más de un elemento, al mismo tiempo, puede añadir una coma y el número de elementos que así:
(v._Myfirst)[startIndex], count
sin embargo, tenga en cuenta que la cuenta debe ser una constante, no puede ser el resultado de una expresión.
En VS2005 y VS 2008 puede ver el contenido de los contenedores STL. Las reglas para acceder a los datos se encuentran en autoexp.dat "c: \ Archivos de programa \ Microsoft Visual Studio 9 \ Common7 \ Packages \ Debugger \ autoexp.dat".
AutoExp.dat está destinado a ser personalizado. Sin embargo, las defs de STL están bajo una sección llamada [Visualizador]. Si puedes descifrar el lenguaje utilizado en esa sección, más poder para ti, sin embargo, recomendaría simplemente dejar esa parte en paz.
Autoexp.dat existía en VS2003, pero no había soporte para contenedores STL ([Visualizer] no existía). En VS2003, debe navegar manualmente por la representación de datos subyacente.
Al modificar autoexp.dat, es posible agregar reglas para navegar la representación de datos de sus propios tipos para que sean más fáciles de depurar. Si haces esto, solo deberías agregar lo que está debajo de [AutoExp]. Tenga cuidado y mantenga una copia de seguridad de este archivo antes de modificarlo.
El método anteriormente mencionado [((v) ._ Myfirst) [index]] funcionará solo para contenedores específicos (std :: vector) no para todos los contenedores STL posibles. Por ejemplo, si desea ver el contenido de std :: deque, debe buscar otro método para navegar por el contenido en std :: deque.
Tal vez usted puede probar la siguiente configuración similar a resolver su problema
[He probado esta configuración sólo para Visual Studio 2010 Professional versión instalada con Microsoft Visual Studio 2010 Service Pack 1]
Paso 1 : Desinstalar el Service Pack 1 de Microsoft Visual Studio 2010 - para el trabajo de mi proyecto, realmente no necesito el Service Pack 1, por lo que la desinstalación del Service Pack 1 no causará ningún problema en mi caso.
Paso 2: reinicie su sistema.
Paso 3: Este paso no es necesario si no obtiene Error 'ENLACE: error fatal LNK1123: error durante la conversión a COFF: el archivo no es válido o está dañado'. ver de otro modo a través
Proyecto Propiedad -> Linker (General) -> Cambiar Habilitar incremental ligarse a n (/ incremental: NO)
Para ver el enésimo elemento de un contenedor en el depurador de Visual Studio, utilice:
container.operator[](n)
parece más fácil que la opción _Mi primera, utilicé & para ver el búfer en bruto en la ventana de memoria – paulm
En vs 2015, no pude conseguir cualquiera de estos trabajo
así, he escrito un poco de código
1: tenía vector de vector de elementos largos largos
std::vector<std::string> vs(M_coins + 1);
for (unsigned long long i = 0; i <= M_coins; i++) {
std::for_each(memo[i].begin(), memo[i].end(), [i, &vs](long long &n) {
vs[i].append(std::to_string(n));
});
}
// now vs is ready for use as vs[0], vs[1].. so on, for your debugger
básicamente lo que hice fue convertir el vector en cadena. tenía un vector de vector, así que tenía un vector de cadena para llenar.
2: si sólo tiene un vector de elementos largos largos, a continuación, sólo convertir de la siguiente manera:
std::vector<std::string> s;
std::for_each(v1.begin(), v1.end(), [&s](long long &n) {
s.append(std::to_string(n));
});
// now s is ready for use, for your debugger
espero que ayudó.
El método más simple es que tiene que preparar un puntero para ver variables como esta.
vector<int> a = { 0,1,2,3,4,5 };
int* ptr = &a[0]; // watch this ptr in VisualStudio Watch window like this "ptr,6".
me trataron "a._Myfirst [0]" en VisualStudio2015, pero fue no muestra datos de la matriz.
Si puede usar "natvis", resolverá sus problemas.
Ésta es "sample.natvis" para std :: visualización de datos vectoriales para Visual Studio 2015.
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="std::vector<*>">
<DisplayString>{{ size={_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst} }}</DisplayString>
<Expand>
<Item Name="[size]" ExcludeView="simple">_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst</Item>
<Item Name="[capacity]" ExcludeView="simple">_Mypair._Myval2._Myend - _Mypair._Myval2._Myfirst</Item>
<ArrayItems>
<Size>_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst</Size>
<ValuePointer>_Mypair._Myval2._Myfirst</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
gracias ayudo – David
- 1. Depuración de contenedores C++ STL en Windbg
- 2. Inspeccionando contenedores STL en XCode
- 3. ¿Cómo funciona la depuración en Visual Studio?
- 4. Ruido reducido en la depuración de los tipos stl
- 5. const y STL contenedores
- 6. Obtención de depuración de STL en XCode
- 7. ¿Transferir la propiedad dentro de contenedores STL?
- 8. Compatibilidad binaria de contenedores STL
- 9. Depuración de JavaScript en Visual Studio 2008
- 10. Visual Studio 2010 larga depuración
- 11. Contenedores OpenCV, Matlab y STL
- 12. compatibilidad del compilador para asignadores con estado en contenedores STL
- 13. Visual Studio: información de depuración en la compilación de lanzamiento
- 14. const y no const en contenedores STL
- 15. ¿Cómo se implementa end() en contenedores STL?
- 16. lambda + for_each + eliminar en contenedores STL
- 17. Visual studio + depuración remota de gdb
- 18. ¿Cómo habilitar la depuración de procedimientos almacenados en Visual Studio?
- 19. ¿Puedo deshabilitar la "vista de depuración" en Visual Studio 2010?
- 20. Estructuras de datos equivalentes de contenedores STL
- 21. iteración de contenedores STL encapsulados encapsulados
- 22. VC++ permite usar tipos const para contenedores STL. ¿Por qué?
- 23. STL asignación de contenedores y punteros const
- 24. Confundido sobre la depuración remota en Visual Studio 2010
- 25. ¿Cómo desactivar la depuración remota en Visual Studio 2010?
- 26. Visual Studio depuración remota un servicio
- 27. depuración visual studio vs versión modo
- 28. Depuración Visual Studio construye desde Eclipse
- 29. Visual Studio - Filtrar excepciones de la salida de depuración
- 30. ¿La compilación de depuración de Visual Studio contiene información personal?
Para los perezosos para seguir el enlace, la solución es '((v) ._ Myfirst) [index]' – Izzy