Ho avuto un grosso problema con i punti di interruzione che non venivano colpiti in una DLL DirectShow di Delphi 6. Caricare la DLL (AX) nell'IDE e eseguirlo con Graph Edit come programma Host e nessuno dei breakpoint si innescherebbe. Ho provato a spostare la DLL di FastMM4 nella directory del progetto, a rimuovere completamente FastMM4, a attivare e disattivare le DCU di debug, a pulire le directory di progetto, annullare la registrazione e registrare nuovamente la DLL, tutto ciò a cui riuscivo a pensare. Niente ha funzionato Ogni volta che eseguivo il programma host, vedevo la mia DLL caricare con il messaggio "Nessuna informazione di debug" nel visualizzatore eventi. Poi in una disperata ricerca su Google ho trovato un post per C++ Builder che raccomanda provare l'opzione del linker "simboli di debug remoto":I punti di interruzione DLL non vengono colpiti con l'opzione "simboli di debug remoto", perché e tutti i rischi per la sicurezza con quelli?
Progetto -> Opzioni -> Linker (Tab) -> Exe e le opzioni di DLL (casella di gruppo) -> "includere simboli di debug remoto" (controllato)
Improvvisamente i miei punti di interruzione iniziato essere colpito. Ecco le mie domande:
1) Perché ha funzionato? È a causa dell'opzione o perché questa opzione ha attivato qualche altra operazione Compiler/Linker che ha risolto le cose? Mi piacerebbe sapere in modo che possa risolvere questo problema in modo affidabile in futuro, quando accadrà di nuovo.
2) I simboli di debug remoto possono essere utilizzati da un programmatore ostile per tracciare in profondità il mio programma? In altre parole, sono un rischio per la sicurezza se lasciati in giro?
Non lotta, pubblica il codice sorgente. – OnTheFly
Quale versione di Delphi? I Delphis meno recenti non sono così bravi nel debugging delle DLL. A volte ho trovato necessario mettere l'host exe nella stessa cartella della DLL. Certamente dovrebbe essere sufficiente compilare la DLL con le opzioni di debug standard. Non c'è bisogno di simboli remoti. –
@DavidHeffernan. Delphi 6. –