2009-02-27 15 views
6

Soy un desarrollador que trabaja en Visual C++, pero en mi proyecto hay algunos componentes Delphi. Necesito depurar los componentes Delphi para solucionar algunos problemas.Cómo depurar un archivo DLL en Delphi

¿Cuáles son los elementos necesarios para generar un archivo DLL en depuración y luego iniciar la depuración en Delphi?

Respuesta

20

En Delphi 7 haría esto:

Proyecto | Opciones | Compilador | Depuración | Información de depuración (verificación)

Luego vaya a Ejecutar | Parámetros | Host Application e ingrese el nombre de su exe.

Agregue algunos puntos de interrupción en su código DLL y luego haga clic en ejecutar. Su exe se cargará y puede depurar las partes de la DLL en Delphi IDE.

Si su exe ya se está ejecutando, haga clic en Ejecutar | Asociar al proceso

- He probado esto y encontré que también se necesitaba para comprobar la "incluyen los símbolos de depuración remota" en la página Enlazador de las opciones del proyecto en Delphi 7.

yo era capaz de obtener una punto de interrupción para golpear con la ejecución | Parámetros, así como Ejecutar | Adjunte a los métodos de proceso. La DLL de prueba que había creado tenía una única función stdcall y fue cargada dinámicamente por una aplicación de consola de Visual C++.

+0

@Chapel. ¿Estás seguro de que se puede utilizar Adjuntar para procesar para depurar la DLL? –

+0

He hecho lo mismo, pero el punto de quiebre no está golpeando. Creo que la coincidencia entre el código y el depurador no se está estableciendo. No estará allí el concepto de PDB (presente en vc 6) estará allí. – coolcake

+1

símbolos de depuración remota no deberían ser necesarios – dummzeuch

4

Lo usamos bastante a menudo (usando Delphi).

Asegúrese de:

  1. permitir que todas las opciones de depuración en todos los proyectos (archivo (s) DLL). Y deshabilite la optimización.
  2. Asegúrese de establecer la aplicación host en el archivo EXE correcto.
  3. Crear archivo (s) DLL.

Ahora puede colocar puntos de interrupción en dll y exe. Y ejecute el archivo DLL desde el IDE. Inicia el archivo EXE y se detiene en los puntos de interrupción solicitados.

Incluso funciona cuando los archivos DLL están dinámicamente vinculados (si están descargados, los puntos azules desaparecen).

0

El método que Gamecat sugirió es algo que he usado anteriormente.

Otra forma es: tengo el proyecto DLL, pero también hago un proyecto de "banco de pruebas". El proyecto de "banco de pruebas" tiene una forma que puede ejercitar directamente el código que normalmente se usaría en una DLL.

Cuestiones relacionadas