Soporte de Natvis para la depuración de Android

Soporte de Natvis para la depuración de Android

Esperamos que haya visto nuestra compatibilidad con la depuración de código C++ en Android en Visual Studio 2015. Ahora, en nuestra versión RC, nos complace anunciar que hemos agregado compatibilidad con archivos natvis para ayudar a visualizar sus tipos nativos.

Los clientes que usan nuestras versiones anteriores de CTP nos informan que contar con soporte de natvis para clases comunes como las clases de contenedor de la biblioteca de plantillas estándar (STL) (por ejemplo, vector, mapa, pila, cola, etc.) sería extremadamente útil al depurar. Para ver natvis en acción, veamos un ejemplo rápido de cómo se ve la inspección de un vector con y sin natvis. A los efectos de esta muestra, creé un proyecto de actividad nativa de Android y agregué una función que crea un vector y le inserta 10 valores.

Primero veamos la experiencia sin natvis. Resulta que no es posible encontrar el conteo y los elementos individuales en el vector simplemente examinando el objeto en el depurador.

Ahora haré el mismo ejercicio con un archivo natvis para el vector. Cuando amplío el vector por primera vez, veo dos opciones, "[Vista visualizada]", la vista que me dará Natvis, y "base", la vista que representa la vista no visualizada que tenía anteriormente. Inmediatamente puede ver la columna "Valor" para la [Vista visualizada] que me muestra la cantidad de objetos en el vector (tamaño).

Expandir la [Vista visualizada] me muestra el tamaño, la capacidad y los valores individuales almacenados en el vector.

Si está familiarizado con la experiencia de Windows natvis, notará que tiene que elegir explícitamente expandir la vista de natvis en lugar de aplicarla de manera predeterminada. Esto se debió al hecho de que gdb puede ser muy lento para evaluar las expresiones, lo que afectaría gravemente el rendimiento de detenerse en los puntos de interrupción y avanzar si lo aplicáramos automáticamente.

Por supuesto, puede crear sus propios archivos natvis para cualquier clase para la que necesite mejores visualizaciones (recomiendo leer esta publicación de blog sobre cómo escribir visualizaciones nativas mantenibles). Puede agregar estas entradas al archivo Microsoft.Android.natvis que se instala con Visual Studio (consulte a continuación). Sin embargo, la forma más fácil y recomendada es crear su propio archivo natvis y agregarlo a la raíz del proyecto que está depurando (esto también le permite verificarlo en el control de código fuente con el proyecto).

Incluiremos visualizaciones para contenedores comunes con Visual Studio 2015 en versiones futuras, pero para comenzar rápidamente con RC, use el archivo adjunto que contiene definiciones para implementaciones de:

  • std::lista
  • estándar::vector
  • std::mapa
  • estándar::establecer
  • std::matriz
  • std::forward_list
  • std::cola
  • std::priority_queue
  • std::conjunto de bits
  • std::valarray
  • std::__1::vector
  • std::__1::mapa

Para usarlo, descargue el archivo Microsoft.Android.natvis adjunto y reemplace la copia que instaló en [Visual Studio 14 Root]\Common7\IDE\CommonExtensions\Microsoft\MDD\Debugger.

Más allá de natvis, hemos trabajado para corregir errores y mejorar el rendimiento de la depuración desde nuestro último lanzamiento. Háganos saber cómo funciona la nueva experiencia de natvis (y la depuración general de Android) e informe cualquier problema o comentario general a continuación, a través de la función Enviar una sonrisa en Visual Studio o en nuestro foro de MSDN.

Microsoft.Android.natvis