Depurar proyectos DLL

Actualización: noviembre 2007

Este tema hace referencia a:

Edición

Visual Basic

C#

C++

Web Developer

Express

Standard

Pro y Team

Leyenda de la tabla:

Se aplica

No procede

Comando o comandos ocultos de manera predeterminada.

Las plantillas siguientes crean archivos DLL:

  • (C++, C# y Visual Basic): Biblioteca de clases

  • (C++, C# y Visual Basic): Biblioteca de controles de formularios Windows Forms

    Depurar una biblioteca de controles de Windows es similar a depurar un proyecto de biblioteca de clases. En la mayoría de los casos, el control de Windows se llama desde otro proyecto. Cuando se depura el proyecto que hace la llamada, se puede ejecutar paso a paso el código del control de Windows, establecer puntos de interrupción y realizar otras operaciones de depuración. Para obtener más información, vea Controles de formularios Windows Forms.

  • (C# y Visual Basic): Biblioteca de controles web

    Para obtener más información, vea Biblioteca de controles Web (código administrado).

  • (C++): Control ActiveX MFC y Control ActiveX de Smart Device MFC

    Los controles ActiveX son controles que se pueden descargar a través de Internet en un equipo cliente, y se pueden mostrar y activar en páginas web.

    Depurar estos controles es similar a depurar otros tipos de controles ya que no pueden ejecutarse como independientes, sino que deben incrustarse en una página web HTML. Para obtener más información, vea Cómo: Depurar un control ActiveX.

  • (C++): Archivo DLL MFC de Smart Device

    Para obtener más información, vea Técnicas de depuración de MFC.

Esta sección también contiene información sobre los temas siguientes:

En este tema se incluyen las siguientes secciones, que tratan consideraciones relativas a la preparación de la depuración de bibliotecas de clases:

  • Generar una versión de depuración

  • Depuración en modo mixto

  • Cambiar las configuraciones predeterminadas

  • Maneras de depurar la DLL

  • La aplicación que efectúa la llamada

  • Controles de una página Web

  • La ventana Inmediato

Generar una versión de depuración

Cualquiera que sea la forma en la que inicia la depuración, primero debe asegurarse de generar la versión de depuración del archivo DLL y, después, de que dicha versión está en la ubicación donde la aplicación espera encontrarla. Esto puede parecer una obviedad pero, si olvida este paso, la aplicación podría encontrar y cargar una versión diferente del archivo DLL. Después el programa continuará ejecutándose mientras se pregunta por qué nunca se visitó el punto de interrupción. Durante la depuración, para comprobar qué archivos DLL ha cargado el programa, abra la ventana Módulos del depurador. La ventana Módulos muestra cada uno de los archivos DLL o EXE cargados en el proceso que se depura. Para obtener más información, vea Cómo: Utilizar la ventana Módulos.

Para que el depurador se asocie al código escrito en C++, el código debe emitir DebuggableAttribute. Puede agregar este atributo directamente al código si lo vincula con la opción /ASSEMBLYDEBUG del vinculador.

Depuración en modo mixto

La aplicación que realiza la llamada a la DLL puede estar escrita en código administrado o en código nativo. Si el código nativo llama a la DLL administrada y se desea depurar ambos, deben habilitarse los depuradores administrados y nativos. Puede hacerlo en el cuadro de diálogo o ventana Páginas de propiedades de<Proyecto>. La forma de hacerlo depende de si inicia la depuración desde el proyecto DLL o desde el proyecto de la aplicación que hace la llamada. Para obtener más información, vea Cómo: Depurar en modo mixto.

Cambiar las configuraciones predeterminadas

Cuando se crea un proyecto de aplicación de consola con la plantilla de proyecto, Visual Studio crea automáticamente la configuración requerida para las configuraciones Debug y Release. Si fuera necesario, puede cambiar esa configuración. Para obtener más información, vea Configuración del proyecto para una configuración de depuración de C++, Configuración del proyecto para configuraciones de depuración en C#, Configuración del proyecto para una configuración de depuración de Visual Basic y Cómo: Establecer configuraciones Debug y Release.

Maneras de depurar la DLL

Cada uno de los proyectos de esta sección crea un archivo DLL. No es posible ejecutar un archivo DLL directamente; se debe utilizar una aplicación para llamarlo, normalmente un archivo EXE. Para obtener más información, vea Creación y administración de proyectos de Visual C++. La aplicación que realiza la llamada podría ajustarse a cualquiera de los criterios siguientes:

  • Una aplicación generada en otro proyecto de la misma solución de Visual Studio que contiene la biblioteca de clases.

  • Una aplicación existente ya implementada en un equipo de pruebas o de producción.

  • Ubicada en Internet y accesible mediante una dirección URL.

  • Una aplicación web que contiene una página web que incrusta el archivo DLL.

Depurar la aplicación que hace la llamada

Para depurar un archivo DLL, comience por depurar la aplicación que realiza la llamada, que por lo general es un archivo EXE o una aplicación Web. Hay varias formas de hacerlo.

  • Si tiene un proyecto para la aplicación que hace la llamada, ábralo e inicie la ejecución desde el menú Depurar. Para obtener más información, vea Cómo: Iniciar una ejecución.

  • Si la aplicación que realiza la llamada es un programa existente, implementado en un equipo de pruebas o de producción que ya está en ejecución, asócielo a él. Utilice este método si el archivo DLL es un control alojado en Internet Explorer o un control de una página Web. Para obtener más información, vea Cómo: Conectar a procesos en ejecución.

  • Puede depurarlo desde el proyecto DLL. Para obtener más información, vea Cómo: Depurar desde un proyecto DLL.

  • Puede depurarlo desde la ventana Inmediato de Visual Studio. En este caso, la ventana Inmediato realiza la función de la aplicación.

Antes de iniciar la depuración de la aplicación que hace la llamada, normalmente es conveniente establecer un punto de interrupción en la biblioteca de clases. Para obtener más información, vea Puntos de interrupción y puntos de seguimiento. Cuando se visita el punto de interrupción, se puede ejecutar paso a paso el código y observar la acción en cada línea hasta aislar el problema. Para obtener más información, vea Información general sobre cómo ejecutar código.

Controles de una página Web

Para depurar un control de una página web, cree una página de ASP.NET que lo incruste si dicha página aún no existe. Luego, coloque los puntos de interrupción en el código de la página web, así como el código de control. A continuación, invoque la página Web desde Visual Studio.

Antes de iniciar la depuración de la aplicación que hace la llamada, normalmente es conveniente establecer un punto de interrupción en el archivo DLL. Cuando se visita el punto de interrupción, se puede ejecutar paso a paso el código y observar la acción en cada línea hasta aislar el problema. Para obtener más información, vea Puntos de interrupción y puntos de seguimiento e Información general sobre cómo ejecutar código.

La ventana Inmediato

Puede evaluar funciones o métodos en el archivo DLL sin necesidad de que una aplicación realice la llamada. Efectúe una depuración en tiempo de diseño y utilice la ventana Inmediato. Para depurar de esta manera, siga estos pasos mientras el proyecto DLL está abierto:

  1. Abra la ventana Inmediato del depurador.

  2. Para probar un método denominado Test en la clase Class1, cree instancias de un objeto de tipo Class1 escribiendo el siguiente código de C# en la ventana Inmediato. Este código administrado funciona para Visual Basic y C++, con los cambios de sintaxis adecuados:

        Class1 obj = new Class1();
    

    En C#, todos los nombres deben estar completos. Además, cualquier método o variable debe estar en el ámbito y contexto actual de la sesión de depuración.

  3. Suponiendo que Test acepte un parámetro int, evalúe Test mediante la ventana Inmediato:

       ?obj.Test(10)
    

    El resultado se imprimirá en la ventana Inmediato.

  4. Para continuar la depuración de Test, coloque un punto de interrupción dentro de ella y evalúe nuevamente la función:

       ?obj.Test(10);
    

    Se llegará al punto de interrupción y podrá recorrer Test. Después de que la ejecución sale de Test, el depurador regresa al modo de diseño.

Vea también

Conceptos

Configuración del proyecto para configuraciones de depuración en C#

Configuración del proyecto para una configuración de depuración de Visual Basic

Seguridad del depurador

Referencia

Configuración del proyecto para una configuración de depuración de C++

Otros recursos

Depurar código administrado

Preparación de la depuración: tipos de proyecto de Visual C++

Preparación de la depuración: Tipos de proyectos de C# y Visual Basic