2012-05-09 11 views
5

Ho scritto una semplice applicazione win32 VCL che ha il seguente codice:Come eseguire il debug remoto un'applicazione Win32 VCL costruita con il pacchetto runtime

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

ho compilato la domanda con i pacchetti runtime e si è attivare le seguenti opzioni:

  1. informazioni di debug -> vero
  2. comprende i simboli di debug remoto -> vero
  3. Asserzione, le informazioni di debug, smbols locali, Deus uso di debug -> true

L'uscita ha i seguenti file:

  1. project1.exe
  2. project1.rsm

I due pacchetti di runtime sono:

  1. vcl160.bpl
  2. rtl160.b pl

Ho impostato un punto di interruzione nel gestore Button1Click, il debugger IDE locale si fermerà lì se corro il applicazione in modalità debugger.

Successivamente, voglio provare a eseguire il debug remoto dell'applicazione con i pacchetti di runtime.

Assegna il profilo remoto alla piattaforma Windows a 32 bit. La connessione di prova funziona con il profilo remoto. Anche PAServer è stato avviato nella macchina remota. Posso notare 4 file sono stati copiati macchina remota quando si tenta di eseguire l'applicazione con Delphi XE2 IDE debugger:

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

Tuttavia, il registro eventi mostra:

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

Poiché il modulo non dispone di informazioni di debug, non verrà attivato alcun punto di interruzione.

Ho provato a creare un'applicazione di file singolo .exe senza pacchetti di runtime. Le stesse fasi del debugger remoto funzionano e posso eseguire il debug dell'applicazione in remoto.

Cosa ha fatto fallire il debug remoto con l'applicazione creata con pacchetti di runtime?

+0

una buona pratica di debug è anche l'uso di OutputDebugString, che può essere gestito da te, o da un software 3d party – RBA

+0

perché non hai specificato la versione Delphi, forse questo può aiutare http://stackoverflow.com/questions/ 5018147/delphi-2010-remote-debugging-incapace-per-get-breakpoints-working – RBA

+0

RBA: Sto usando Delphi XE2 update 4. Il post che hai suggerito è l'applicazione .exe autonoma e non compilata con i pacchetti di runtime. –

risposta

1

Sembra che sia necessario distribuire in aggiunta file ".dcp" corrispondenti ai pacchetti runtime utilizzati.

Da Debugger Notes (Note di rilascio per XE2):

Garantire informazioni di debug con l'aggiunta di .dcp file da Application Deployment

Se l'applicazione si collega Delphi con i pacchetti in fase di esecuzione, l'atteso Le informazioni di debug non possono essere generate. Questo vale per le applicazioni Mac OS X e per le applicazioni Win64 o Win32 remote. La soluzione alternativa consiste nell'utilizzare Gestione distribuzione per aggiungere i file .dcp che corrispondono ai pacchetti di runtime nell'elenco dei pacchetti di runtime. Per l'istanza , se si utilizza rtl, è necessario distribuire il file rtl.dcp.

utilizzare i file .dcp trovano nella Embarcadero \ Rad Studio \ 9.0 \ lib directory, come segue:

  • Per un'applicazione OS X: Embarcadero \ Rad Studio \ 9.0 \ lib \ osx \ release
  • Per un'applicazione Windows a 64 bit remoto: Embarcadero \ Rad Studio \ 9.0 \ lib \ Win64 \ release
  • Per un'applicazione remota di Windows a 32 bit: Embarcadero \ Rad Studio \ 9.0 \ lib \ win32 \ release
+0

Seguire le istruzioni della nota del debugger non funziona ... qualche idea? –

+0

@Chau - Siamo spiacenti, no. In realtà non ho mai usato pacchetti di runtime. Speravo che la documentazione fosse utile. Farebbe la differenza con il 'dcp nella cartella di debug? –

+0

@Sectac: Ho provato sia la cartella di rilascio che quella di debug e non funziona. –

Problemi correlati