Depurar proyectos DLL
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:
Compilar 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
Compilar una versión de depuración
Cualquiera que sea la forma en la que inicia la depuración, primero debe asegurarse de compilar 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 seleccionarlo 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 integrada 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 <PAVEOVER> Cómo: Iniciar la 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 hospedado en Internet Explorer o un control de una página Web. Para obtener más información, vea <PAVE OVER> 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 el rol 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 Breakpoints and Tracepoints. 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 <PAVEOVER> 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 Breakpoints and Tracepoints.
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:
Abra la ventana Inmediato del depurador.
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.
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.
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
Referencia
Configuración del proyecto para una configuración de depuración de C++
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
Otros recursos
Preparación de la depuración: tipos de proyecto de Visual C++
Preparación de la depuración: Tipos de proyectos de C#, F# y Visual Basic