2012-05-09 18 views
5

me escribió una sencilla aplicación Win32 VCL que tiene el siguiente código:cómo depurar a distancia una aplicación Win32 VCL construida con el paquete de tiempo de ejecución

procedure TForm5.Button1Click(Sender: TObject); 
begin 
    ShowMessage('bingo'); 
end; 

que compila la aplicación de paquetes de tiempo de ejecución y tiene a su vez en los siguientes interruptores:

  1. depuración de la información -> true
  2. Incluir símbolo de depuración remota -> true
  3. aserción, la información de depuración, smbols locales, DCU uso de depuración -> true

La salida tiene los siguientes archivos:

  1. project1.exe
  2. project1.rsm

Los dos paquetes de tiempo de ejecución son:

  1. vcl160.bpl
  2. rtl160.b pl

puse un punto de quiebre en el manejador de Button1Click, el depurador IDE locales se detendrá ahí si me quedo la aplicación en modo depurador.

A continuación, quiero probar la depuración remota de la aplicación con paquetes de tiempo de ejecución.

Asigno un perfil remoto a la plataforma de Windows de 32 bits. La conexión de prueba funciona con el perfil remoto. PAServer también se inició en una máquina remota. Puedo notar 4 archivos se han copiado a máquina remota cuando intento de ejecutar la aplicación con Delphi XE2 IDE depurador:

  1. Project1.exe
  2. project1.rsm
  3. vcl160.bpl
  4. rtl160.bpl

Sin embargo, el registro de sucesos muestra:

Module Load: Project1.exe. No Debug Info. Base Address: $00400000. Process Project1.exe (1676) 

Como el módulo no tiene información de depuración, no se activarán todos los puntos de interrupción.

He intentado construir la aplicación .exe de archivo único sin paquetes de tiempo de ejecución. Los mismos pasos de depuración remota funcionan y puedo depurar la aplicación de forma remota.

¿Qué ha hecho que la depuración remota falle con la aplicación creada con paquetes de tiempo de ejecución?

+0

una buena práctica para depurar también es usar OutputDebugString, que puede ser manejado por usted, o por un software de parte 3d – RBA

+0

porque no especificó la versión de Delphi, quizás esto puede ayudar a http://stackoverflow.com/questions/ 5018147/delphi-2010-remote-debugging-unable-to-get-breakpoints-working – RBA

+0

RBA: Estoy usando la actualización 4 de Delphi XE2. La publicación que sugirió es la aplicación standalone .exe y no compilada con los paquetes de tiempo de ejecución. –

Respuesta

1

Parece que tiene que implementar adicionalmente los archivos '.dcp' correspondientes a los paquetes de tiempo de ejecución utilizados.

De Debugger Notes (Notas de la versión para XE2):

asegurar que la información de depuración mediante la adición .dcp archivos de aplicación despliegue

Si sus vínculos de aplicación de Delphi con paquetes en tiempo de ejecución, la espera información de depuración podría no ser generada. Esto es cierto para aplicaciones Mac OS X y para aplicaciones remotas Win64 o Win32 remotas. La solución alternativa es usar Deployment Manager para agregar los archivos .dcp que corresponden a los paquetes de tiempo de ejecución en su lista de paquetes de tiempo de ejecución. Para la instancia , si usa rtl, debe desplegar el archivo rtl.dcp.

utilizar los archivos .dcp ubicados en el Embarcadero \ Rad Studio \ 9.0 \ lib directorios, de la siguiente manera:

  • Para una aplicación OS X: Embarcadero \ Rad Studio \ 9.0 \ lib \ OSX \ liberación
  • Para un control remoto de aplicaciones de Windows de 64 bits: Embarcadero \ Rad Studio \ 9.0 \ lib \ Win64 \ liberación
  • Para una aplicación de control remoto de 32 bits de Windows: Embarcadero \ Rad Studio \ 9.0 \ lib \ Win32 \ liberación
+0

Seguir la instrucción de la nota del depurador no funciona ... ¿Alguna idea? –

+0

@Chau - Lo siento, no. En realidad, nunca usé paquetes de tiempo de ejecución. Esperaba que la documentación fuera útil. ¿Haría una diferencia con el 'dcp's en la carpeta de depuración? –

+0

@Sectac: He intentado con la carpeta de lanzamiento y depuración y no funciona. –

Cuestiones relacionadas