Jump to content

Plugin debuggen mit Delphi 7


Recommended Posts

So, nachdem ich das schon länger geplant habe, wollte ich mir jetzt endlich mal die Plugin-Programmierung für den DVBViewer reinziehen - ich habe da so einige Erweiterungen im Sinn, die ich gerne umsetzen möchte.

 

Dass ich weder mit Delphi noch mit DLLs Erfahrung habe, schreckt mich erstmal nicht. :)

 

Es würde mich aber freuen, wenn die erfahreneren Plugin-Programmierer mich bei ein paar Anfängerfragen unterstützt würden.

 

Im Moment hänge ich beim Thema Debuggen von DLLs. Um den Ablauf der bei Initialisierung zu verstehen, würde ich gerne durch das Beispielprogramm steppen.

 

Mein Stand soweit:

- Ich habe Delphi 7

- ich kann das Beispiel "myprogram.dll" komplieren

- ich habe in Delph unter Run->Paramters die Pfade zum DVBViewer eingetragen (Host Application und Working Directory).

- ich habe in der Prozedur DLLEntry einen Breakpoint gesetzt

- wenn ich jetzt auf Run gehe, wird der DVBViewer gestartet und er versucht, die DLL zu Initialisieren - dann bekomme ich den Bildschirm mit den CPU-Registern

 

Da hänge ich jetzt. Wie bekomme ich es hin, dass ich an dieser Stelle durch den Quelltext steppen kann?

 

Ich habe im Internet gefunden, dass man irgendwie mit Ctrl-Alt-M die Symbols neu laden soll. Das bekomme ich aber nicht hin bzw. es klappt nicht wie beschrieben.

Edited by dgdg
Link to comment

Ok, because my post has been moved to this English area I try to explain it in English, too.

 

I want to write plugins for DVBViewer with Delphi 7. Because I have no experience with Delphi 7 and DLL programming ( :wacko: ) I ask for some initial support from the experienced plugin programmers here. :)

 

My first problem is, that I do not know how to debug a DVBViewer DLL with Delphi 7. I want to step thru the example "myprograms.dll" to understand what is going on during initialisation and so on.

 

- I have got Dephi 7

- I can compile the example "myprograms.dll"

- I have set the path to DVBViewer at Run->Paramters (Host Application and Working Directory)

- I have set a breakpoint inside the procedure DLLEntry

- when I use Run in Delphi the DVBViewer is started and the processor screen appears (assembler listing and cpu registers) but I can not step thru the source code

 

What is the right procedure to debug the example DLL - on source code level?

Edited by dgdg
Link to comment

das ist normal, das sind all die decoder die sich zickig haben, weil man sie nicht debuggen soll (da wird die liste aller verfügbaren decoder aufgebaut). Einfach immer F9 drücken bis es weitergeht.

Für Deine tests musst Du probieren welcher decoder das mitmacht. Cyberlink zum beispiel weigert sich grundsätzlich mit nem debugger zu laufen und verursacht absichtlich probleme.

Link to comment
das ist normal, das sind all die decoder die sich zickig haben, weil man sie nicht debuggen soll (da wird die liste aller verfügbaren decoder aufgebaut). Einfach immer F9 drücken bis es weitergeht.

Für Deine tests musst Du probieren welcher decoder das mitmacht. Cyberlink zum beispiel weigert sich grundsätzlich mit nem debugger zu laufen und verursacht absichtlich probleme.

 

Ich habe jetzt mal einige Video- und Audiocodecs durchprobiert aber bekomme immer das gleiche Debug-Fenster.

 

Wenn ich ein paar mal F9 drücke, lande ich tatsächlich auf meinem Breakpoint. Aber wenn ich dann nocheinmal F9 drücke, bekomme ich die nachfolgender Meldung und der Debugger wird gestoppt. Die Meldung kommt übrigens auch, wenn ich keinen Breakpoint setzte.

 

Ich habe mal versucht, den DVBViewer mit Paramter "-c" starten zu lassen, in der Hoffnung, dass dann kein Videocodec aktiviert wird. Bringt das was?

 

Hast du sonst noch einen Tipp für mich?

Edited by dgdg
Link to comment

setze in den start parametern mal -c. Ich wüsste den fehler so nicht zuzuordnen. Der kann von nem decoder, nem plugin oder vom viewer kommen, das wird ja alles in einen topf (sprich Process) geschmissen...

Link to comment
setze in den start parametern mal -c. Ich wüsste den fehler so nicht zuzuordnen. Der kann von nem decoder, nem plugin oder vom viewer kommen, das wird ja alles in einen topf (sprich Process) geschmissen...

 

Genau das hatte ich schon probiert (hab's gerade oben ergänzt). :)

 

EDIT: Bin einen Schritt weiter. Ich habe wegen deinem Hinweis auf andere Plugins mal alle anderen Plugins rausgeschmissen. Jetzt startet der DVBViewer durch. Ich hoffe, dass ich jetzt mit dem Debuggen weiterkommen.

Edited by dgdg
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...