#VS2017 – Debug // ReAttach to process, so cool !

Hola ! Hoy mientras depuraba una UWP me encontré con este nuevo menú el Visual Studio 2017: Debug // Reattach to Process. El nombre es bastante descriptivo y la verdad es que es una idea genial. Según lo que comentan en el blog de MSDN, el funcionamiento es el siguiente: Una vez que nos hemos […]

Hi !

I was debugging an UWP App and suddenly I see this new option in the debug menu inside Visual Studio 2017: Debug // Reattach to Process.

Clipboard02

The name is enough to understand the main objective of the menu. Even so, the idea is great. In the MSDN Blog they describe the complete flow on how to use it, somehow similar to this one:

  1. When we start a debugging session and we attach to a process, Visual Studio stores some information about this process and enable the option “Reattach to Process …”
  2. If we select this option, the IDE looks for a process with the same ID and process name. When it founds the process it will automatically attach to the process.
  3. If the IDE could not find a process based on process ID and process name, a new search will be started using only process Name. As before, if a process is found, the IDE will automatically attach to the process.
  4. If the IDE found more than one process with the same name, it will display the attach to process window with the processes so we can select the process or processes to attach.

And a very cool feature.

If we attach to more than one process during a debugging session, the option “Reattach to process …” will automatically try to attach to all of this process when we click on this option

Greetings @ Toronto

El Bruno

References

Advertisements

#VS2017 – Debug // ReAttach to process, so cool !

Hola !

Hoy mientras depuraba una UWP me encontré con este nuevo menú el Visual Studio 2017: Debug // Reattach to Process.

Clipboard02

El nombre es bastante descriptivo y la verdad es que es una idea genial. Según lo que comentan en el blog de MSDN, el funcionamiento es el siguiente:

  1. Una vez que nos hemos attachado a un proceso, Visual Studio guarda cierta información sobre el mismo y habilita la nueva opción “Reattach to Process …”
  2. Cuando seleccionamos esta opción, el IDE intenta buscar el proceso por el ID y el nombre del mismo. Si lo encuentra, se adjunta para poder tener capacidades de depuración.
  3. En el caso que no lo encuentre, realiza una búsqueda solo por el nombre y luego se adjunta si lo encuentra.
  4. Si encuentra varios procesos son el mismo nombre, nos mostrará la ventana de Debug para seleccionar el proceso que queremos depurar.

Y un detalle especial para esta funcionalidad.

Si durante una sesión de depuración nos adjuntamos a más de un proceso, la opción “Reattach to process …” intentará adjuntarse a esos mismos procesos cuando la seleccionemos.

Saludos @ Toronto

El Bruno

References

#HoloLens – Debugging Apps, HoloTip: Disable Intellitrace and Diagnostics Tools

Hello!

Most of developers likes the chance to debug an application, this is something that comes as a plus and can help us in tons of scenarios. The case of Hololens is special since we could think in 2 models of debugging

  • Visual Debugging. In addition to debugging, we could speak of 3D environments emulation without the need of using Hololens. We can do this using Hololens Emulator or even Unity3D in future versions (see references)
  • Source Code Debugging. A classic for any developer, the capacity of real time Debuging on apps that are are running on the device.

As well, in the 2nd option there are several things that we can do to improve our experience of debugging. In 1st place, and as I wrote 5 years ago: disable Intellitrace. Another action that can help us is:

Disable the options of Diagnostics Tools

It is not very complicated and is an option that is enabled by default in Visual Studio.

clipboard03

Disabling this option is very simple

  • Menu Tools // Options
  • Debugging // General
  • Uncheck [Enable Diagnostic Tools while debugging]

With those 3 simple steps, your experience of purification will be much more pleasant.

Greetings @ Toronto

El Bruno

References

#HoloLens – Sobre la depuración de apps, HoloTip: Deshabilita Intellitrace y Diagnostics Tools

Hola !

Como todo developer, la capacidad de depurar una aplicación es algo que siempre viene como un plus y puede ayudarnos bastante. El caso de Hololens es especial ya que podríamos pensar en 2 modelos de depuración

  • Depuración de elementos visuales. Además de depurar, podríamos hablar de emular entornos 3D sin la necesidad de utilizar Hololens. Esto lo podemos hacer utilizando el emulador de Hololens o inclusive Unity3D en futuras versiones (ver referencias)
  • Depuración de código fuente. Un clásico para cualquier developer, la capacidad de depurar en tiempo real apps que se están ejecutando en el device.

Pues bien, en el 2do caso hay varias cosas que podemos hacer para mejorar nuestra experiencia de depuración. En 1er lugar, y como comenté hace 5 años: deshabilita Intellitrace. Otra acción que puede ayudarnos es:

Deshabilitar las opciones de Diagnostics Tools

No es muy complicado y es una opción que viene activaba por defecto en Visual Studio.

clipboard03

Deshabilitar esta opción es muy simple

  • Menu Tools // Options
  • Debugging // General
  • Desmarcar [Enable Diagnostic Tools while debugging]

Con esos 3 simples pasos, tu experiencia de depuración será mucho más agradable.

Saludos @ Toronto

El Bruno

References

#VS2015 – DebugStudio, You can Debug in GODMODE in Visual Studio

Hola!

Again Visual Studio 2015 extensions Friday’s. Today is time for a very fun developer activity: "The debug mode". The senior developers or demigods mostly consider debugging an unworthy Act. I also am who think it’s much more productive to "think before to debug". However, I am also aware that if you goes into debug mode, if the best way to learn and become familiar with new code.

As well, today I found this extension which allows you to be a debugger in Visual Studio 2015 in God Mode: "DebugStudio". According to the extension author, the tool is in Alpha stage with what we can expect some errors. However, it has a couple of very interesting ideas. For example;

Step debugging point counter

This is great, we can see to the left of the refined line, the number of times that the debugger has gone through this line. In a loop, the idea is well understood.

Disable breakpoint after N times

Related to the previous point, we can define that a breakpoint ceases to be valid after N times.

There are other interesting options such as the chance to add breakpoints in bulk way, mark them so they are not disabled, etc. I think I will give you a look during the next few months and I’ll see if it continues to evolve.

Enjoy your weekend!

Saludos @ Madrid

/El Bruno

References

– DebugStudio https://visualstudiogallery.msdn.microsoft.com/8179a62d-0ef1-4104-bc0a-613a3cd9a526

– Debug Lambda Expressions https://elbruno.com/2015/07/21/vs2015-debug-lambda-expressions/

– Debug Linq Sentences https://elbruno.com/2015/07/21/vs2015-debugging-linq-sentences/

[#AZURE] Y como el error “Could not load file or assembly ‘Microsoft.WindowsAzure.ServiceRuntime, … “ puede hacer que pierdas noches de descanso

Hola!

Cuando una Cloud Service app que está funcionando desde hace meses deja de funcionar, sin dejar trazas de error. Sabes que es momento de calentar café, porque te esperan noches largas. Más aún si el no funcionamiento es esporádico y reproducirlo no es tarea trivial.

En este caso en particular el error no se trataba como una excepción sino que terminaba perdida como una mala Http Response. Para llegar a esta conclusión, tuve que romper la madre de todas las reglas en un Dev Team:

HE DEPURADO EL ENTORNO DE PRODUCCIÓN (bueno en realidad no es así, pero queda muy bien asustar a más de uno!)

Todavia recuerdo los dolores de cabeza que me daba llegar a un server de producción y ver instaladas herramientas de desarrollo. El caso extremo fue llegar a un cliente y ver que un gestor de transacciones online había dejado de funcionar porque … alguien habia matado la instancia de VisualCafe (todo el JBoss que soportaba el gestor de transacciones estaba siendo ejecutado con un F5 desde VisualCafe, y así duró varios días!).

En nuestro caso, lo extraño es que llegábamos a la 2da frase que más dolores de cabeza nos da a los desarrolladores

EN MI ORDENADOR FUNCIONA !!!

Y así era, en los entornos locales con el emulador de Azure todo funcionaba perfectamente, sin embargo en ejecución aparecían los fantasmas. Aquí había varias opciones, una de ellas involucraba IntelliTrace, la otra era mejor Winking smile 

La solución fue crear una nueva Cloud Service App en Azure, desplegar nuestra solución allí (que es más fácil de decir que de hacer por la cantidad de dependencias que tiene) y esperar que allí también deje de funcionar. (En la original hay trabajando personas de China, Brazil, USA, Francia, etc. meterle mano a esta es jugar a ser Dios …)

Por suerte, en este nuevo entorno de prueba el error se daba también esporádicamente, y en el mismo teníamos mano para AGRADECER A TODO EL EQUIPO DE MICROSOFT DE AZURE POR LA 2DA OPCION EN LA SIGUIENTE IMAGEN:

image

Nos hemos conectado en modo depuración a una instancia en ejecución de un website en una Cloud Service App de Azure !!! Esta feature fue anunciada hace un tiempo, y son del tipo de noticias que las escuchas y que no parecen tan importantes hasta que las necesitas.

Pues bien, después de llegar a la excepción y de un poco de buceo por el código llegamos a la excepción

{“Could not load file or assembly ‘Microsoft.WindowsAzure.ServiceRuntime, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.”:”Microsoft.WindowsAzure.ServiceRuntime, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″}

Que era un balde de agua fría, ya que el modelo de trabajo no había cambiado en bastante tiempo. Despues de ver a algunas personas con problemas similares (1, 2, 3, y 4), llegamos a una solución que todavía no me ha convencido del todo.

  • Actualizar todos los proyectos que utilicen NuGet pkgs de Azure a la ultima versión. Esto es coherente y es parte de lo hacemos en cada actualización del SDK.
  • Modificar las Dll References con la propiedad “Copy Local = True”, para que se incluyan las mismas dentro del paquete a desplegar. En este caso las dlls eran: Microsoft.WindowsAzure.Configuration, Microsoft.WindowsAzure.Diagnostics, Microsoft.WindowsAzure.Storage y … Microsoft.WindowsAzure.ServiceRuntime. Lo de esta última es increíble.
  • Agregar en el web.config una redirección de assemblies para que se utilicen las versiones correctas. Algo del tipo

  <assemblyIdentity name=”Microsoft.WindowsAzure.ServiceRuntime” culture=”neutral” publicKeyToken=”31bf3856ad364e35″ />
  <bindingRedirect oldVersion=”0.0.0.0-2.3.0.0″ newVersion=”2.3.0.0″ />
</dependentAssembly>

 

Si bien estos pasos son coherentes, el 2do donde hemos tenido que incluir Microsoft.WindowsAzure.ServiceRuntime con copia local = true, me da que pensar. Según mi entendimiento, una Cloud Service App debería incluir estos componentes Out of the Box.

Pues bien, esta solución funciona y ahora me tocará preguntarle a los cracks de Azure: @ibonilm o @quiqu3 que me he perdido en el camino. 

PD: en el camino me queda explicar también el siguiente error:

Message=Could not load file or assembly ‘msshrtmi, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.
       Source=Microsoft.WindowsAzure.ServiceRuntime
       FileName=msshrtmi, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Este, da para unas cervezas o tequilas …

Update: Gracias Gisela (@0Gis0) que me ha aclarado varias cosas! y ha escrito un excelente post sobre cómo depurar Azure Cloud Service apps desde Visual Studio (link)

Saludos @ Home

El Bruno

image image image Google