Depuración de aplicaciones
.Net en Visual Studio
Debugging Tactics
Contenidos
• Contexto de depuración en Visual Studio.
• Ciclo de desarrollo
• Introducción Windows y .Net.
• ¿Qué es .net?...
Ciclo de desarrollo
De bugging is twice as hard as writing the code in the first
place.Therefore if you write the code as ...
Introduccion Windows y .net
• En el entorno de Microsoft
disponemos de 2 entornos de
depuración.
• Windows debugging.
• Or...
Que es .net?
Las principales ventajas de hacer debugging en Visual Studio provienen realmente de
estar utilizando .net.
• ...
Visual studio correspondencia .net
IDE integrated development enviroment.
An integrated development environment (IDE) or interactive
development environment ...
Contenidos
• Contexto de depuración.
• Configuración de depuración.
• Herramientas del entorno de desarrollo.
• Soluciones...
Herramientas del entorno de desarrollo
Sugerencias para el entorno de desarrollo de 2010.
IDE
• Microsoft Visual Studio 20...
Configuración de opciones VS
• Si tenemos 2 instancias abiertas de visual studio y modificamos la
configuración de una de ...
Soluciones y proyectos
• Soluciones y proyectos son los contenedores que permiten administra
los elementos necesarios para...
Problemas de carga de proyectos
• Visual studio proporciona diversas plantillas de proyecto así como de solución o de elem...
Propiedades de la solución
Acceso
1. En el Explorador de soluciones, seleccione una
solución.
2. Elija Páginas de propieda...
Configuration Manager
Por norma general es conveniente que en un
producto a entregar todas las compilaciones
coincidan en ...
Propiedades del Proyecto: project designer
Para acceder a las propiedades del proyecto basta con hacer doble click
en la c...
Propiedades del Proyecto: Aplicación.
• Entre las propiedades que nos interesan tenemos.
• El target framework que en vs20...
Propiedades de build event
• Aquí podemos invocar aplicaciones o copiar resultados desde una
carpeta a otra para facilitar...
Propiedades de compilación.
• Elegimos la configuración de debugging y la plataforma sobre la que
haremos el debug. (Gesti...
Ficheros PDB
Fuente : http://mariangemarcano.blogspot.com.es/2011/11/visual-studio-debugging-and-remote.html
La configurac...
Propiedades de Proyecto: Depurar
• Podemos establecer como ejecutamos el proyecto O si necesita ser
ejecutado por otro pro...
Configuración de depuración remota
1. Compartimos la carpeta para la maquina remota o instalamos
c:Program Files(x86)  Mic...
Contenidos
• Contexto de depuración en Visual Studio.
• Configuración de Depuración en Visual Studio
• Herramientas de dep...
Ventana: Jerarquía de llamadas
La jerarquía de llamadas permite navegar por
el código mostrando todas las llamadas a y
des...
Elegir elementos de la caja de herramientas
• Este dialogo nos permite elegir las opciones de nuestro toolbox para
algunos...
Insertar código snipets o envolver codigo
• Insertar snipet ctrol-k,x (insert with..)
• Envolver snipet ctrol-k,s (surroun...
Ventana de comandos
Acceso : menú ver /view seleccione “otras ventanas” seleccione “ventana comando”
La ventana de comando...
Tareas, errores y miscelánea
• Ventana “Lista de errores”. No hace falta comentar.
• “Ctrl-G” goto line usar en combinació...
Ventana de inmediato
Esta ventana nos permite realizar depuración en tiempo de diseño sin necesidad de ejecutar el
program...
Ventana: Autos
• Solo disponible en modo depuración con el programa en break mode.
• Nos proporciona los nombres de las va...
Información de Carga de módulos
• Solo disponible en modo debug.
• Nos proporciona un listado de los asembblies que hemos ...
Contenidos
• Contexto de depuración en Visual Studio.
• Configuración de Depuración en Visual Studio
• Herramientas de dep...
Iniciar/parar la ejecución en modo depurado.
F5 – Depurar –Debug
F11 – paso a paso por instrucciones - step over. Inicia l...
Set next stament
• Si te has pasado de sentencia en la
ejecución paso a paso esta opción te
permite hacer marcha atrás.
• ...
Conectarse a procesos en ejecución
Se lleva a cabo con el attach process
• Depurar una aplicación no creada con viaul stud...
Permisos en depuración remota
Depuración Administrada
En la depuración remota con visual studio. Este
se convierte en un c...
Especificar una versión de .net
El depurador de Visual Studio 2010 puede depurar versiones anteriores de Microsoft .NET Fr...
Depuración de múltiples procesos
• Los procesos corresponden a las aplicaciones y se ejecutan dentro de un
dominio.
• Los ...
Herramientas de debuggin de hilos y procesos
Las ventanas del menú de depuración (La mayor parte de ellas son
accesibles c...
Ventana de pilas paralelas
Si consultamos la ventana de parallel stacks de una aplicación “hello Wordl”
observaremos que e...
Depuración just in time
• Le depuración just in time hace que una aplicación invoque al
depurador en caso de que se produz...
Depuración de servicios Windows Instalando
La ejecución de un servicio se debe llevar a cabo en el contexto del
Administra...
Inciso Windows Services introducción
Existen dos tipos de servicios Windows :
• Aquellos que solo ejecutan un servicio en ...
Depuración de Servicios Windows sin instalar
Opción de depuración de WS. Convertir el WS en aplicación de consola.
• Este ...
Best practices Windows Services
• Capturar las excepciones no gestionadas en el constructor del servicio
public WSNameServ...
Intellitrace
Intellitrace realiza una grabación del historial de ejecución.
Registra eventos y/o llamadas a función.
Permi...
Intellitrace
• Algunas llamadas pueden aparecer atenuadas para indicar que
pertenecen a un modulo del que no se graba.
• C...
Es posible utilizar intellitrace en sistemas desplegados con el Microsoft
Monitoring Agent y el recolector de datos de dia...
Gracias
• Javier Hermoso
• Freelance .net
• jhermoso@pretor.es
Algunas Fuentes
• Depurar en visual studio.
• https://msdn.microsoft.com/es-es/library/sc65sadd(v=vs.80).aspx
• http://www...
Próxima SlideShare
Cargando en…5
×

Depuración de aplicaciones en visual studio

2.576 visualizaciones

Publicado el

Depuración de aplicaciones .NET en Visual Studio.

Publicado en: Software
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.576
En SlideShare
0
De insertados
0
Número de insertados
27
Acciones
Compartido
0
Descargas
21
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.
  • Microsoft .NET es una plataforma de desarrollo y ejecución de aplicaciones. Esto quiere decir que no sólo nos brinda todas las herramientas y servicios que se necesitan para desarrollar modernas aplicaciones empresariales y de misión crítica, sino que también nos provee de mecanismos robustos, seguros y eficientes para asegurar que la ejecución de las mismas sea óptima. Los componentes principales de la plataforma .NET son:
    Un entorno de ejecución de aplicaciones, también llamado “Runtime”, que es un componente de software cuya función es la de ejecutar las aplicaciones .NET e interactuar con el sistema operativo ofreciendo sus servicios y recursos.
    Un conjunto de bibliotecas de funcionalidades y controles reutilizables, con una enorme cantidad de componentes ya programados listos para ser consumidos por otras aplicaciones.
    Un conjunto de lenguajes de programación de alto nivel, junto con sus compiladores y linkers, que permitirán el desarrollo de aplicaciones sobre la plataforma .NET.
    Un conjunto de utilitarios y herramientas de desarrollo para simplificar las tareas más comunes del proceso de desarrollo de aplicaciones
    Documentación y guías de arquitectura, que describen las mejores prácticas de diseño, organización, desarrollo, prueba e instalación de aplicaciones .NET

    A lo largo de esta presentación se analizará cada uno de estos puntos con mayor detalle.

    Por otra parte, .NET representa la evolución COM (Component Object Model), la plataforma de desarrollo de Microsoft anterior a .NET y sobre la cual se basaba el desarrollo de aplicaciones Visual Basic 6 (entre otros tantos lenguajes y versiones).
  • Todo lo que vamos a ver se puede aplicar a casi todas las versiones de Visual studio si bien nos vamos a centrar en la 2010 con el framework 4.0.

    Este esquema nos presenta las tecnologías que cada una de las versiones de .net va incluyendo y por tanto nos indican a que tecnologías estamos renunciando cuando elegimos un determinado framework de desarrollo.
  • El service pack de visual studio incorpora herramientas y tecnologías que no están contemapladas en la priemra versión y que resultan fundamentales para programar en net.4.0

    El SDK de Windows dependerá del sistema operativo en el que vayamos a trabajar y se ha incluido por que contiene herramientas especificas de debugging para aplicaciones nativas. Sibine quedan fuera del alcance de este curso.

    Igualmente el SDK de visual studio nos incorpora herramientas con las que podemos extender las capacidades del visual studio en cualquiera de sus facetas pero que igualmente nos queda fuera del alcance de este curso.

    Style cop y FX cop nos permite asegura el cumplimiento de una serie de reglas de formato a la hora de escribir el código. Estas reglas pueden exigir que se incorporen determinados bloques como comentarios xml asi como el formato de indentación de nuestro código con obejto de que todos los integrantes del equipo sigan las misma reglas de edidión.
    Power commands y produtivity tools nos proporcionan una interface mejorada del ide en aspecots muy básicos.
    Vsix explorer nos amplia la capacidad de extender el visual estudio con nuestros propias plantillas de proyecto, de solución o de elemento.
    Nuget es la mejor opción para incorporar y mantener nuestras librerías de terceros y también nos permite desarrollar un nuget privado como opción a tener que incluir en el GAC las librerías desarrolladas internamente.
  • Depuración de aplicaciones en visual studio

    1. 1. Depuración de aplicaciones .Net en Visual Studio Debugging Tactics
    2. 2. Contenidos • Contexto de depuración en Visual Studio. • Ciclo de desarrollo • Introducción Windows y .Net. • ¿Qué es .net? • Correspondencia entre .net y Visual Studio. • El IDE de visual studio. • Configuración de Depuración en Visual Studio • Herramientas de depuración Visual Studio. • Como depurar en Visual Studio.
    3. 3. Ciclo de desarrollo De bugging is twice as hard as writing the code in the first place.Therefore if you write the code as cleacerly as possible, you are by definition, not Smart enough to debug it. Brian Kernighan Depurar código tiene como objetivo encontrar las causas de un problema. El uso de técnicas de TDD incrementa el tiempo de desarrollo por 2 pero reduce el tiempo de debugging. (es cuestión de elegir como queremos que sea nuestro ciclo de desarrollo)
    4. 4. Introduccion Windows y .net • En el entorno de Microsoft disponemos de 2 entornos de depuración. • Windows debugging. • Orientado al debugging de Aplicaciones nativas win32 y com principalmente drivers de dispositivos, productos office. VS. etc • Visual Studio Debugging. • Orientado principalmente al debugging de aplicaciones administradas .net Windows S.O. Win32. Aplicaciones nativas. Desarrollo de drivers y aplicaciones fuertemente acopladas al sistema operativo. Ejemplo: aplicaciones office y el propio Visual Studio. .Net Plataforma de desarrollo CLR + BCL Apl. administradas Entorno de desarrollo oop tanto local como distribuido. Facilitar el despligue de aplicaciones. Integración Ejemplo: ERP. Juegos. Etc.
    5. 5. Que es .net? Las principales ventajas de hacer debugging en Visual Studio provienen realmente de estar utilizando .net. • Plataforma de Desarrollo compuesta de • Entorno de Ejecución (Runtime) • Bibliotecas de Funcionalidad (Class Library) • Lenguajes de Programación • Compiladores • Herramientas de Desarrollo (IDE & Tools) • Guías de Arquitectura • La evolución de la plataforma COM ¿Qué no es? • .NET no es un Sistema Operativo • .NET no es un Lenguaje de Programación • .NET no es un Entorno de Desarrollo • .NET no es un Servidor de Aplicaciones • .NET no es un producto empaquetado que se pueda comprar como tal
    6. 6. Visual studio correspondencia .net
    7. 7. IDE integrated development enviroment. An integrated development environment (IDE) or interactive development environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion. • Source: http://en.wikipedia.org/wiki/Integrated_development_environment
    8. 8. Contenidos • Contexto de depuración. • Configuración de depuración. • Herramientas del entorno de desarrollo. • Soluciones y proyectos • Problemas de carga de proyectos • Propiedades de la solución. • Propiedades del proyecto. • Propiedades del proyecto: Aplicación. • Propiedades del proyecto: Depuración. • Propiedades de proyectos y soluciones. • El IDE de visual studio. • Herramientas de depuración de visual studio.
    9. 9. Herramientas del entorno de desarrollo Sugerencias para el entorno de desarrollo de 2010. IDE • Microsoft Visual Studio 2010, ediciones Premium o Ultimate. • Microsoft Visual Studio 2010 Service Pack 1. SDK. • Windows x.y SDK • Visual studio SDK, SDK sp1 Extensiones de la galería de visual studio. • Stylecop • FXCop • PowerCommands for Visual Studio 2010 • Productivity power tools for visual studio • Team founsdation server power tools • Vsix explorer • Nuget. • GIT. • Otras sugerencias: • http://stackoverflow.com/questions/2767/recommended-add-ons-plugins-for-microsoft-visual-studio • http://geekswithblogs.net/sdorman/archive/2014/10/05/favorite-visual-studio-extensions.aspx
    10. 10. Configuración de opciones VS • Si tenemos 2 instancias abiertas de visual studio y modificamos la configuración de una de ellas es posible que la segunda no se actualize. Por lo que esta operativa solo se debería llevar a cabo con una única instancia de VS. En caso de que si se actualice puede ser debido a que el Registro haya almacenado la misma clave para ambas instancias lo que además es un comportamiento indeseable.
    11. 11. Soluciones y proyectos • Soluciones y proyectos son los contenedores que permiten administra los elementos necesarios para la construcción de aplicaciones. Estos elementos son: Referencias (Dlls con las enlazar), Metadatos, Configuraciones de compilación, carpetas, archivos, etc. • Las soluciones se definen en dos archivos los .sln y los .slu (metadatos y opciones del usuario de V.S. como la inclusión de nuevos elementos en la toolbox) • Los proyectos permiten administrar de forma lógica sus componentes, compilarlos y depurarlos.
    12. 12. Problemas de carga de proyectos • Visual studio proporciona diversas plantillas de proyecto así como de solución o de elemento. Algunas de estas plantillas de proyecto se instalan de forma opcional con SDKs específicos u otro tipo de extensiones como puede ser los proyectos de MVC. En algunos casos esto significa que si no tienes instalado la tecnología adecuada no podrás cargar el proyecto que la usa indicándote el Visual Studio que no ha sido capaz de cargar dicho proyecto marcándolo como “no disponible”. • Para averiguar que tecnología, extensión o sdk debemos instalar podemos editar el fichero “.csproj” aprovechando que el mismo esta descargado. • Al editarlo comprobamos que dicho fichero que solo es accesible si “descargamos” el proyecto es en realidad un fichero xml con el configuramos las características comportamiento del proyecto. • Localizamos entonces el Global id del proyecto con el atributo xml <ProjectTypeGuids> • Que nos proporciona un lista de globals Id asignados a los tipos de proyecto que intervienen en dicho proyecto. • Después podemos consultar este en http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type- GUIDs o en http://www.mztools.com/articles/2008/mz2008017.aspx • Y averiguar así que tecnología debemos incluir para poder cargar el proyecto. • Importante muchas extensiones es conveniente instalarlas con el visual studio cerrado o en caso contrario nos obligara a reiniciarlo para poder hacer uso de las nuevas características incorporadas.
    13. 13. Propiedades de la solución Acceso 1. En el Explorador de soluciones, seleccione una solución. 2. Elija Páginas de propiedades en el menú Ver (view) o sacar el menú contextual en el ítem de propiedades de la solución del explorador de soluciones. Nos aparece un cuadro de dialogo con Las propiedades comunes a los proyectos y las propiedades de cada una de las configuraciones, Debug, Release etc. En la sección “Propiedades de configuración”. Para poder cambiar estas propiedades debemos ir al configuration manager con el botón o con el menú de “Build” la opción de configuration manager. Aquí podemos establecer para cada configuración de compilación/Construcción cual es la plataforma para la que queremos compilar. De esta manera podemos hacer debuging en una plataforma hacer reléase en otra etc. También podemos incluir o no código con las directivas de compilación condicional. Y el orden en que queremos que se realice la compilación.
    14. 14. Configuration Manager Por norma general es conveniente que en un producto a entregar todas las compilaciones coincidan en la plataforma que se desea entregar. Por defecto nos aparecerá x86 pero si deseamos contar con las ventajas de otras plataformas con x64 o itanium tenemos que añadirlas. Solo es necesario tener en cuenta que solo podemos añadirlas una única vez para todos los proyectos de la solución pero luego tenemos que seleccionarlas para cada proyecto. De esta forma podemos crear una serie de productos con diversas “releases” cada una de ellas orientadas a diferentes plataformas. NOTA: para compilar simultáneamente varias configuraciones podemos utilizar la compilación por lotes o batch compiling.
    15. 15. Propiedades del Proyecto: project designer Para acceder a las propiedades del proyecto basta con hacer doble click en la carpeta de propiedades o seleccionar con el menú contextual en el explorador de soluciones o en el menú de proyecto la opción “Propiedades” Aparecera el dialogo de “Propiedades del proyecto”. Con diversas opciones en las Pestañas de la izquierda. Las pestañas que ahora nos interesan son: Aplicación, Compilar y Debug Para cualquier duda sobre el significado de estas pestañas solo es necesario pulsar al tecla f1 para sacar la ayuda correspondiente. NOTA: El dialogo de propiedades del proyecto también se conoce como Project Designer.
    16. 16. Propiedades del Proyecto: Aplicación. • Entre las propiedades que nos interesan tenemos. • El target framework que en vs2010 nos aparece por defecto el framework 4 cliente profile. El cual es un subconjunto de .net redistribuible el cual renuncia a algunas características de .net como son: ASP.NET, funcionalidad avanzada de Windows Communication Foundation (WCF) .NET Framework Data Provider para Oracle y la compilación por MSBuild. • Igualmente el output type nos resultara de interés sobre todo para organizar la depuración de servicios Windows. Los cuales se establecen como Windows application pero que cambiaremos a Console application para facilitar su debuggin como veremos mas adelante.
    17. 17. Propiedades de build event • Aquí podemos invocar aplicaciones o copiar resultados desde una carpeta a otra para facilitar el posterior despliegue de aplicaciones. • Por ejemplo los proyectos con prism pueden copiar de la carpeta de ensamblados a la carpeta de búsqueda de los módulos del proyecto. • O los proyectos de WCF pueden invocar a la utilidad de svcutil para generar los clientes. • Estas invocaciones se pueden llevar a cabo en función del resultado de la compilación.
    18. 18. Propiedades de compilación. • Elegimos la configuración de debugging y la plataforma sobre la que haremos el debug. (Gestionamos las configuraciones pero no establecemos cual es la configuración activa) • Separados por comas podemos establecer los símbolos de compilación condicional para la configuración que hemos seleccionado previamente. • Establecemos el warning level y aquellos códigos de warning de los que no queremos ser notificados. • Para facilitar el debug es mejor NO activar la optimización de código. • Para asegurar la coherencia de todos los ensamblados es mejor dirigir el camino de salida output path a una misma carpeta para todos los ensamblados que no correspondan a proyectos de aplicaciones web. Los cuales se dejaran en la carpeta por defecto bindebug o bin%configuración% • En el dialogo de “Avanzado” comprobar que para la configuración de debug la opción debug info es “full”.
    19. 19. Ficheros PDB Fuente : http://mariangemarcano.blogspot.com.es/2011/11/visual-studio-debugging-and-remote.html La configuración “Debug” genera información de símbolos completa de símbolos sin optimización. La configuración “Reléase” optimiza el código y genera solo los ficheros PDB pero no incluye el atributo “Debuggable” Por lo que el código fuente y los números de línea no serán visibles en una sesión de depuración pero la existencia del PDB permitirá que esta información sea utilizada por el stacktrace. La optimización por su parte es eliminada por que este proceso reordena las instrucciones para obtener un código mas eficiente. Esta optimización se realiza en dos pasos cuando se obtiene el código msil y cuando se compila siendo en su mayor parte realizada por el JIT. Los ficheros PDB con el atributo de debuggable son los que permiten realizar la depuración en remoto para lo cual ambas maquinas necesitan permisos de acceso mutuamente. Otra característica interesante para hacer debugging de un ejecutable es crear un fichero con idéntico nombre que el ejecutable y tipo .ini con el siguiente código. [.Net Framework Debugging Control] GenerateTrackingInfo=1 AlloOptimized=0
    20. 20. Propiedades de Proyecto: Depurar • Podemos establecer como ejecutamos el proyecto O si necesita ser ejecutado por otro proyecto de la solución. (módulos de prism) • Podemos establecer los argumentos que pasaríamos si estuviéramos invocando la aplicación desde una consola. • Podemos establecer si la ejecución se realiza en otra maquina o directorio. • Establecemos si la ejecución de este proyecto va a usarse el host de visual studio. Recordar que cuando ejecutamos .net el compilador genera MSIL y el CLR nos proporciona un host de ejecución que nos proporciona un dominio de aplicación (una forma de aislamiento preventivo entre aplicaciones ) cuando no permitimos o no podemos utilizar el host de visual studio estaremos renunciando a un gran numero de capacidades de debugging como suele ser cuando seleccionamos la opción de reléase.
    21. 21. Configuración de depuración remota 1. Compartimos la carpeta para la maquina remota o instalamos c:Program Files(x86) Microsoft visual Studio 10.0 IDE remote Debugger 2. Se copian las tres carpetas pues en SO de 64 bits 3. También se puede instalar con el instalador de remote debugger que se encuentra en el disco de instalación de visual studio. Rdbgsetup_xXX.exe que lo instalara como un servicio. 4. Se ejecuta msvsmon.exe
    22. 22. Contenidos • Contexto de depuración en Visual Studio. • Configuración de Depuración en Visual Studio • Herramientas de depuración Visual Studio. • Como depurar en Visual Studio.
    23. 23. Ventana: Jerarquía de llamadas La jerarquía de llamadas permite navegar por el código mostrando todas las llamadas a y desde un método, propiedad, o un constructor seleccionados. Esto permite entender mejor cómo fluye el código y evaluar los efectos de los cambios que se realizan en el código. Puede examinar varios niveles de código para ver cadenas complejas de llamadas a métodos y puntos de entrada adicionales al código, lo que le permite explorar todas las posibles rutas de ejecución. Sin embargo Jerarquía de llamadas no encuentra las referencias del grupo de métodos, que contiene ubicaciones en las que un método se agrega como controlador de eventos o se asigna a un delegado. Para buscar todas las referencias a un método, puede usar el comando Buscar todas las referencias. También se puede ejecutar el menú contextual sobre los nodos de la jerarquía de llamadas. por ejemplo ir a la definición (f12) que navegara hasta el código o el PDB correspondiente. Jerarquía de llamadas está disponible en tiempo de diseño, a diferencia de la pila de llamadas que muestra el depurador.
    24. 24. Elegir elementos de la caja de herramientas • Este dialogo nos permite elegir las opciones de nuestro toolbox para algunos de los principales namespaces en uso. • Se usa fundamentalmente para configurar los componentes que queremos para WPF. Menú herramientas, opción elegir elementos de la caja de herramientas
    25. 25. Insertar código snipets o envolver codigo • Insertar snipet ctrol-k,x (insert with..) • Envolver snipet ctrol-k,s (surround with) • https://vssnippets.codeplex.com/ en esta url existe una lista de snippets consistentes con las reglas de stylecop para instalarlos solo es necesario REEMPLAZARLOS en una de estas dos carpetas en función de la arquitectura. • C:Program Files (x86)Microsoft Visual Studio 10.0VC#Snippets1033Visual C# ó C:Program FilesMicrosoft Visual Studio 10.0VC#Snippets1033Visual C#
    26. 26. Ventana de comandos Acceso : menú ver /view seleccione “otras ventanas” seleccione “ventana comando” La ventana de comando se usa para ejecutar comandos, comandos que aparecen en el propio menú del IDE y otros que no aparecen. Los mas usados son “of” para open file. Que nos proporciona una búsqueda incremental de los ficheros de la solución a medida que vamos escribiendo. “g” para debug.start que inicia una sesión de debugging. “?” Para debug.print de una expresión o valor. “??” Para un quick watch “Bl” breakpoint window. “Help” Para la ayuda de la propia ventana. “Eval” para Debug.evaluateStament “Q” stop debugging Para una completa lista de los comandos disponibles consultar. https://msdn.microsoft.com/es-es/library/c338aexd.aspx Y https://msdn.microsoft.com/es-es/library/c3a0kd3x.aspx
    27. 27. Tareas, errores y miscelánea • Ventana “Lista de errores”. No hace falta comentar. • “Ctrl-G” goto line usar en combinación con el comando of (fichero) • Lista de tareas: por comentario Los tokens son(TODO, HACK ). Para crear nuevos tokens Opciones/Enviroment o contexto/ Lista de tareas, tienes un dialogo para añadir nuevos tokens. (IMPORTANTE PARA GESTIONAR NUESTRA DEUDA TÉCNICA) Opciones: de proyectos: • marcar la opción de realizar seguimiento de elemento activo. • Guardar proyectos al crearlos. (elegir) Modificadores denenv Consultar : https://msdn.microsoft.com/es-es/library/xee0c8y7(v=vs.100).aspx
    28. 28. Ventana de inmediato Esta ventana nos permite realizar depuración en tiempo de diseño sin necesidad de ejecutar el programa. • La ventana de inmediato nos permite evaluar expresiones tanto en modo diseño como en modo debug. Ver ejemplo de código. • Esta ventana resulta particularmente útil por ejemplo cuando una sentencia return realiza el calculo de lo que devuelve. Por norma general el colocar el cursor encima no nos permite saber cual es el resultado final pero con esta ventana podemos copiar el la expresión y ejecutarla para saber el resultado. • El alias de comando “?” corresponde a “Debug.Print (expresión)” • En tiempo de diseño podemos ejecutar métodos definidos en nuestro código. Si este tiene un punto de interrupción saltara el debugger en dicho punto. • Importante el signo igual “=” en esta ventana se interpreta como un operador de comparación. No es posible realizar asignaciones en la ventana de comando. • Es posible ejecutar un comando de la ventana decomando dentro de la ventana de inmediato precediéndolo de el signo “mayor que” “>” • El modo marcar permite usar una instrucción anterior. • Esta ventana permite trabajar también con la memoria y los registros. (fuera del alcance en este curso)
    29. 29. Ventana: Autos • Solo disponible en modo depuración con el programa en break mode. • Nos proporciona los nombres de las variables el tipo y el valor. • Guarda los valores en las instrucciones anteriores y posteriores. • Nos permite cambiar el valor de dichas variables. • Nos permite ver el valor devuelto por un método
    30. 30. Información de Carga de módulos • Solo disponible en modo debug. • Nos proporciona un listado de los asembblies que hemos cargado, el path del mismo, el path de su fichero de PDB y el thread en el que se están ejecutando.
    31. 31. Contenidos • Contexto de depuración en Visual Studio. • Configuración de Depuración en Visual Studio • Herramientas de depuración Visual Studio. • Como depurar en Visual Studio.
    32. 32. Iniciar/parar la ejecución en modo depurado. F5 – Depurar –Debug F11 – paso a paso por instrucciones - step over. Inicia la ejecución y se para en la primera instrucción del programa. Estas opciones también están en el menú contextual de los ficheros de proyectos pero permiten ser ejecutadas contra un proyecto no marcado como “startup Project” Ctrl-f10 - Ejecutar hasta el cursor- igualmente opción de menú contextual en el código fuente. Stop. Finaliza el proceso de debugging Break all pausa el hilo de ejecución donde este se encuentre y mostrara el código fuente de donde se ha parado.
    33. 33. Set next stament • Si te has pasado de sentencia en la ejecución paso a paso esta opción te permite hacer marcha atrás. • Advertencia el uso de esta opción puede resultar peligrosa si el stack o los registros se ha corrompido.
    34. 34. Conectarse a procesos en ejecución Se lleva a cabo con el attach process • Depurar una aplicación no creada con viaul studio. • Depurar un proceso en un equipo remoto • Iniciar automáticamente el depurador de visual studio cuando un proceso se bloquee mientras se ejecuta fuera de visual studio. Esto es la depuración just in time. • Se recomienda usar el VS en modo administrador para ver todos los procesos. Ver ejemplo en vs.
    35. 35. Permisos en depuración remota Depuración Administrada En la depuración remota con visual studio. Este se convierte en un cliente de la maquina donde se ejecuta el proceso para ello es necesario instalar o ejecutar los servicios que hemos descrito anteriormente que actúan como servidor. La comunicación entre amsbo es bidireccional y por tanto los permisos tienen que tener en cuenta ambas direcciones lo mas sencillo será que las cuentas locales de administrador tengan permisos entre ambas maquinas y los puertos de tcp y udp estén abiertos. Los problemas de permisos son el principal escollo para realizar la depuración remota. Pero tener estos permisos abiertos hace al sistema de seguridad vulnerable (sobre todo en la modalidad sin autenticación)por lo que se recomienda que dichos permisos sean temporales.
    36. 36. Especificar una versión de .net El depurador de Visual Studio 2010 puede depurar versiones anteriores de Microsoft .NET Framework así como la versión actual. Si inicia una aplicación desde Visual Studio, el depurador siempre puede identificar la versión correcta de .NET Framework para la aplicación que se está depurando. Si la aplicación ya se está ejecutando y se utiliza Adjuntar a, es posible que el depurador no siempre identifique una versión anterior de .NET Framework. Si esto ocurre, aparecerá el mensaje de error: • El depurador ha deducido de manera equivocada la versión de .NET Framework que va a utilizar la aplicación. • En estos raros casos, puede establecer una clave del Registro para indicar al depurador qué versión utilizar. • Para especificar una versión de .NET Framework para la depuración 1. Examine el directorio WindowsMicrosoft.NETFramework para encontrar las versiones de .NET Framework instaladas en su equipo. Los números de versión tienen un aspecto similar al siguiente: 2. V1.1.4322 3. Identifique el número de versión correcto y anótelo. 4. Inicie el Editor del Registro (regedit). 5. En el Editor del Registro, abra la carpeta HKEY_LOCAL_MACHINE. 6. Navegue a: HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio10.0AD7MetricsEngine{449EC4CC-30D2-4032-9256-EE18EB41B62B} 7. Si la clave no existe, haga clic con el botón secundario en HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio10.0AD7MetricsEngine y haga clic en Nueva clave. Asigne el nombre {449EC4CC- 30D2-4032-9256-EE18EB41B62B } a la nueva clave. 8. Después de navegar a {449EC4CC-30D2-4032-9256-EE18EB41B62B }, examine la columna Nombre y encuentre la clave CLRVersionForDebugging. 1. Si la clave no existe, haga clic con el botón secundario del mouse en {449EC4CC-30D2-4032-9256-EE18EB41B62B} y haga clic en Nuevo valor de cadena. A continuación, haga clic con el botón secundario en el nuevo valor de cadena, haga clic en Cambiar nombre y escribaCLRVersionForDebugging. 9. Haga doble clic en CLRVersionForDebugging. 10. En el cuadro Editar cadena, escriba el número de versión de .NET Framework en el cuadro Valor. Por ejemplo: V1.1.4322 11. Haga clic en Aceptar. 12. Cierre el Editor del Registro. 13. Si todavía obtiene un mensaje de error cuando empieza a depurar, compruebe que ha escrito correctamente el número de versión en el Registro.Compruebe también que está utilizando una versión de .NET Framework admitida por Visual Studio. El depurador es compatible con la versión actual de .NET Framework y con las versiones anteriores, pero puede no serlo con versiones futuras.
    37. 37. Depuración de múltiples procesos • Los procesos corresponden a las aplicaciones y se ejecutan dentro de un dominio. • Los hilos (Subprocesos) corren dentro de los procesos. • Diferentes hilos y procesos pueden ser ejecutados de forma paralela. • El procesamiento en paralelo suele necesitar de sincronización para acceder a recursos. Cuando uno o más hilos esperan a un proceso que jamás queda disponible es una condición conocida como “Dead Lock” • La depuración se lleva cabo en el host que Visual Studio proporciona. • Las aplicaciones de script no tienen un proceso. Sino que utilizan otro host como DIIs , o el propio Visual Studio. (t4, dsl) • Una aplicación .exe puede lanzar varios procesos. Para cambiar de un proceso a otro utilizamos la barra de herramientas “Ubicación de depuración” (debug location).
    38. 38. Herramientas de debuggin de hilos y procesos Las ventanas del menú de depuración (La mayor parte de ellas son accesibles cuando se esta ejecutando la depuración.) • El attach to process. (menú debug y tools) • La ventana de procesos. • La ventana de hilos • La ventana de Pila de llamadas Call Stack. • La ventana de tareas paralelas Parallel tasks.
    39. 39. Ventana de pilas paralelas Si consultamos la ventana de parallel stacks de una aplicación “hello Wordl” observaremos que en modo que en modo reléase solo tenemos un único hilo. Sin embargo en modo debug tenemos varios hilos mas que son los que nos permiten hacer el debugging y que pertenecen al host de visual studio.
    40. 40. Depuración just in time • Le depuración just in time hace que una aplicación invoque al depurador en caso de que se produzca una excepción. Este comportamiento se puede deshabilitar en las opciones del debugger pero no evitara que el error salte. Ver ejemplo en código.
    41. 41. Depuración de servicios Windows Instalando La ejecución de un servicio se debe llevar a cabo en el contexto del Administrador de control de servicios en vez de en Visual Studio. Por tanto para depurarlo es necesario instalarlo y realizar un attach del proceso correspondiente. En este caso es necesario tener en cuenta que el método on-start del servicios debe retornar antes de 30 seg. Pasado ese tiempo si no ha retornado por un punto de interrupción el administrador de servicios no lo iniciara. Esto significa que el método on-start no se puede depurar si no se se crea un segundo servicio temporal para cargar el proceso de servicio.
    42. 42. Inciso Windows Services introducción Existen dos tipos de servicios Windows : • Aquellos que solo ejecutan un servicio en un único proceso. Y cuyo tipo es Win32OwnProcess • Aquellos que ejecutan varios servicios en un único proceso y cuyo tipo es Win32ShareProcess Por esta razón la plantilla de Windows Services nos proporciona este código en el fichero Program.cs static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); }
    43. 43. Depuración de Servicios Windows sin instalar Opción de depuración de WS. Convertir el WS en aplicación de consola. • Este método pasa por realizar una comprobación inicial del enviroment y varia la forma de invocar el servicio según si esta instalado o no. Lo que permite permite realizar una depuración dentro del Visual Studio. Para ello eliminamos el fichero program.cs y pasamos el metod main a nuestra clase derivada de System.Windows.Services static void Main(string[] args) { if (Environment.UserInteractive) { var a = new WSNameService(); a.OnStart(args); } else ServiceBase.Run(new WSNameService()); }
    44. 44. Best practices Windows Services • Capturar las excepciones no gestionadas en el constructor del servicio public WSNameService() { this.ServiceName = "WSNameService"; AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); } void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { var ex = (Exception)e.ExceptionObject; try { logService.Fatal("Fallo fatal", ex); } catch (Exception ex2) { // en este caso estamos escribiendo en un log de texto en una carpeta temporal File.WriteAllText(@"c:tempWSNameService" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".txt", ex.ToString() + "rn" + (ex.Source ?? "")); } finally { } }
    45. 45. Intellitrace Intellitrace realiza una grabación del historial de ejecución. Registra eventos y/o llamadas a función. Permite situarse en cualquier punto del historial y consultar el estado del programa en dicho punto. No es necesario reiniciar la depuración para recrear los errores o eventos. Existen dos formas de usarlo, grabar todo y luego filtrar o grabar exclusivamente los eventos en los que se sospecha que ocurre el problema. Se recomienda mantener las ventanas de variables locales y automático abiertas junto con la propia ventana de intellitrace. A continuación cuando se pare la ejecución podrá consultarse cualquiera de los eventos grabados y analizar su contexto.
    46. 46. Intellitrace • Algunas llamadas pueden aparecer atenuadas para indicar que pertenecen a un modulo del que no se graba. • Cuando se esta revisando la información de eventos se puede reflejar en la ventana de código la parte de fuente que corresponde con el evento o la llamda en ese punto que esta marcado tenemos opciones de navegación adicionales. • Igualmente podemos buscar desde la ventana de código cuales son las instancias de esa llamada en el histórico de Intellitrace. • La sesión de intellitrace se puede salvar en disco y recuperar posteriormente. • EL archivo en que se guarda es un “*.itrace” • Es conveniente activar la grabación solo cuando sea necesario.
    47. 47. Es posible utilizar intellitrace en sistemas desplegados con el Microsoft Monitoring Agent y el recolector de datos de diagnostico de intellitrace. Para ampliar información consultar https://msdn.microsoft.com/es-es/library/dn449058.aspx https://msdn.microsoft.com/es-es/library/hh398365.aspx https://msdn.microsoft.com/es-es/library/dn798710.aspx
    48. 48. Gracias • Javier Hermoso • Freelance .net • jhermoso@pretor.es
    49. 49. Algunas Fuentes • Depurar en visual studio. • https://msdn.microsoft.com/es-es/library/sc65sadd(v=vs.80).aspx • http://www.codeproject.com/Reference/720512/List-of-Visual- Studio-Project-Type-GUIDs • http://www.mztools.com/articles/2008/mz2008017.aspx

    ×