El TecnoBaúl de Kiquenet

Kiquenet boring stories

Posts Tagged ‘debug’

Detecting if Code is Running from the IDE

Posted by kiquenet en 1 diciembre 2010

During development, you may find that you need your code to determine if is running from the IDE or standalone.

Unlike previous Microsoft development platforms like VB 6, .NET assemblies don’t have a different “mode” when running from the IDE or from the command line. This can make it difficult to figure out how to determine if an assembly is running from the IDE (i.e. from within Visual Studio .NET).

There are several methods of accomplishing this. The simplest is to use the System.Diagnostics.Debugger.IsAttached property to determine if there is a .NET debugger attached to the currently executing code. If there is, you can assume the code is running from the IDE:

// C#

if (Debugger.IsAttached = true)

      {

// Since there is a debugger attached,

// assume we are running from the IDE

      }

else

      {

// Assume we aren’t running from the IDE

      }

‘ Visual Basic.NET

If Debugger.IsAttached Then

‘ Since there is a debugger attached,

‘ assume we are running from the IDE

Else

‘ Assume we aren’t running from the IDE

End If

User Controls in Runtime Mode

There are also issues with creating your own controls. In some cases, you have code that should not execute in design mode, but should in run mode. In this case, simply use the DesignMode property of the object:

// C#

if (this.DesignMode() = true)

      {

// The component is in design mode

      }

else

      {

// The component is in run mode

      }

‘ Visual Basic.NET

If Me.DesignMode Then

‘ The component is in design mode

Else

‘ The component is in run mode

End If

http://www.fmsinc.com/free/NewTips/NET/NETtip32.asp

Anuncios

Posted in .NET, Trucos | Etiquetado: , | Leave a Comment »

Cómo saber si un assembly esta compilado en modo Debug o Release

Posted by kiquenet en 9 julio 2010

Necesidad de conocer cual era el modo en el cual fue compilado cierto assembly. La primer herramienta a la que acudí me dió una respuesta: Reflector de Lutz Roeder.

El compilador agrega el attributo DebuggableAttribute como información del assembly. Los modos de debug fijados por el compilador dependerán de los parámetros que le pasemos al compilador por línea de comandos o el tipo de compilación que definamos en el proyecto de Visual Studio.

En el caso de haber compilado con Visual Studio 2005 ó 2008 en modo Release, nos encontraremos con la siguiente línea:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

En caso de haber compilado en modo Debug:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]

Les recomiendo la lectura de la documnetación correspondiente a los valores del enumerado System.Diagnostics.DebuggableAttributes.DebuggingModes

A continuación un ejemplo de código que revela el modo de compilación:

La propiedad DebuggableAttributes.IsJITTrackingEnabled controla si en tiempo de ejecución el CLR hace un seguimiento de la información que es importante para el depurador mientras se genera el código. Esta información contribuye a que el depurador mejore la depuración.

public static bool EnsambladoCompiladoEnModoDebug(string filePath)
        {
            var asm = Assembly.LoadFile(Path.GetFullPath(filePath));
            foreach (Attribute att in asm.GetCustomAttributes(false))
            {
                if (att is System.Diagnostics.DebuggableAttribute)
                {
                    var debug = ((DebuggableAttribute)att).IsJITTrackingEnabled;
                    Console.WriteLine("Modo Debug: {0}", debug);
                    if (debug) return true;
                }
            }
            return false;

        }

http://msmvps.com/blogs/cwalzer/archive/2008/04/28/assemblydebugrelease.aspx

Posted in .NET, VisualStudio | Etiquetado: , , | Leave a Comment »