Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   COM DLL - keine Breakpoints (https://www.delphipraxis.net/138429-com-dll-keine-breakpoints.html)

Ralf Kaiser 10. Aug 2009 10:04


COM DLL - keine Breakpoints
 
Hallo,

ich habe da eine COM DLL die ich mit D2007 unter Vista debuggen will. Ich habe dazu die Hostanwendung eingetragen und dann in der COM DLL die Breakpoints gesetzt.

Starte ich dann die Hostanwendung (die COM DLL ist das aktive Projekt, getsartet wird da die Hostanwendung unter "Start/Parameter" eingetragen ist) so werden die Breakpoints die ich gesetzt habe als inaktiv dargestellt. (grüne Zeilenmarkierung, Breakpoint mit einem "x" durchgestrichen)

DLL und Hostanwendung befinden sich im selben Verzeichnis. Das Verzeichnis ist auch im (DOS-) PATH enthalten. Das Ausgabeverzeichnis für DCUs ist für Host und DLL das selbe.

Wähle ich dann "Start/Mit Prozess verbinden" so kann ich die Hostanwendung nicht mehr auswählen weil sie anscheinend schon mit dem Debugger verbunden ist. Trotzdem funktionieren die Breakpoints nicht.

Das seltsame ist, dass dieses Debugging, allerdings auf einem anderen Rechner, bisher funktioniert hat. Ich bin mir aber nicht bewusst auf diesem Rechner etwas anders eingerichtet zu haben.

Kann mir jemand einen Tipp geben, an welchen Setllen ich noch nachsehen kann, an welchen Schrauben ich noch dreahen kann?

Danke schon mal,
Ralf

Ralf Kaiser 13. Aug 2009 09:43

Re: COM DLL - keine Breakpoints
 
Hallo,

mittlerweile habe ich herausgefunden, warum der Debugger bei COM DLLs streikt:

DEr Regitrierungsmechanismus mit dem Delphi eine COM DLL in die Registry einträgt benutzt beim erzeugen der Registrykeys kurze Dateinamen (also die mit der Tilde "~"). Scheinbar findet der Debugger diese dann nicht. Trägt man die DLL mit "normalem", also langem, Dateinamen ein dann ist das Debuggern problemlos möglich.

Eine Bitte:

Kann Bitte mal jemand der im Moment D2009 (oder auch schon D2010) einsetzt nachsehen, ob dies bei diesen Versionen immer noch der Fall ist?

Die Eintragung der DLL findet normalerweise über "TCOmObjectFactory.UpdateRegistry()" statt. Diese Methode befindet sich in der Unit "ComObj"

Wäre echt nett wenn ein D2009-Benutzer unter euch mal eben einen Blick in diese Unit werfen könnte und nachsehen könnte ob dort immer noch diese Zeilen zu finden sind:

Delphi-Quellcode:
ShortFileName := FComServer.ServerFileName
if AnsiPos(' ', ShortFileName) <> 0 then
  ShortFileName := ExtractShortPathName(ShortFileName)
Ich werde die Registrierung jetzt erstmal in einem eigenen Factory-Object, das nicht die geerbte Methode benutzt, erledigen.

Ciao,
Ralf

Humbucker 11. Feb 2013 18:31

AW: COM DLL - keine Breakpoints
 
Hallo Ralf,

ich habe das selbe Problem mit einer "normalen" DLL seit ich auf Delphi XE2 umgestiegen bin. Mit Delphi 7 hat das Debuggen der DLL problemlos funktioniert. Seit Delphi XE2 werden die Breakpoints entfernt und der Debugger läuft einfach durch. Leider verstehe ich nicht wirklich, wie ich das Problem in meinem Fall lösen kann. Betrifft der Lösungsansatz nur COM DLLs?

Falls ja, wie kann das Problem mit einer normalen DLL gelöst werden?

Danke für die Info

Gruß Michael

-------------------
Nachtrag:

Ich habe eben mal die Registry nach dem vollständigen Namen und dem 8.3 Namen (also mit Tilde) durchsucht und keine Treffer bekommen. :gruebel:
-------------------


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf