Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Breakpoint problem (https://www.delphipraxis.net/132872-breakpoint-problem.html)

EWeiss 21. Apr 2009 08:36


Breakpoint problem
 
Hab ein problem mit Debugen.

Die Pfade.

Ausgabepfad gesetzt nach AnwendungsPfad/APlugin
Ausführbare Exe AnwendungsPfad/Example.exe
Zwischengeschaltete DLL AnwendungsPfad/BassVis.dll

Will ich nun die aimp_vis_demo.dll debugen bekomme ich keine Breakpoints.
Wo liegt das Problem ?

gruss Emil

Muetze1 21. Apr 2009 08:47

Re: Breakpoint problem
 
Hallo!

Die DLL Namen sagen mir nichts, wie diese in deinem Programm angesprochen werden ist genauso unklar. Du kennst das Programm/Sources - wir nicht.

Wer lädt welche DLL und wie (dynamisch, statisch?) und wer lädt dann wen nach und wie?

Sind die Debugsymbole eingeschaltet bei den entpsrechenden DLL Versionen?

Liegen noch andere - gleichnamige - DLLs im Suchpfad des Systems oder dem Windows und Windows\System32 Verzeichnis?

Entschuldige, aber meine Glaskugel ist mir runtergefallen...

EWeiss 21. Apr 2009 09:07

Re: Breakpoint problem
 
Zitat:

Wer lädt welche DLL und wie (dynamisch, statisch?) und wer lädt dann wen nach und wie?
Die Exe über LoadLibrary BassVis.dll
BassVis über LoadLibrary aimp_vis_demo.dll und gibt die ausgaben zurück an die Exe. (dynamisch)

Zitat:

Sind die Debugsymbole eingeschaltet bei den entpsrechenden DLL Versionen?
Ja

Zitat:

Liegen noch andere - gleichnamige - DLLs im Suchpfad des Systems oder dem Windows und Windows\System32 Verzeichnis?
Nein

Zitat:

Entschuldige, aber meine Glaskugel ist mir runtergefallen...
Mein Fehler ;)
Etwas unglücklich formuliert.

gruss Emil

himitsu 21. Apr 2009 09:13

Re: Breakpoint problem
 
Also du hast die EXE in Start > Parameter... > Debugger > Host-Anwendung eingetragen und startest den Debugprozess von deiner DLL aus?

vielleicht kommt der Debugger nicht ganz klar, mit einer zwischen DLL, obwohl ich dachte das würde egal sein :gruebel:

EWeiss 21. Apr 2009 09:21

Re: Breakpoint problem
 
Zitat:

Zitat von himitsu
Also du hast die EXE in Start > Parameter... > Debugger > Host-Anwendung eingetragen und startest den Debugprozess von deiner DLL aus?

vielleicht kommt der Debugger nicht ganz klar, mit einer zwischen DLL, obwohl ich dachte das würde egal sein :gruebel:

Korrekt..
Seltsamerweise geht es mit meiner für Winamp geschrieben DLL
Mit der geht es nicht.

Wenn ich sie vorher kompiliere dann sind alle eventuellen positionen wo man Breakpoints setzen kann aktiviert (blau)
Start ich die DLL mit meiner EXE zum debugen schalten die sich alle aus und ich kann keinen break setzen.

gruss Emil

himitsu 21. Apr 2009 09:55

Re: Breakpoint problem
 
ist die ImageBase noch frei,
also kann es sein, daß die DLL wo anders im Speicher geladen wird (da der Platz schon belegt ist) und Delphi diese dann einfach nicht mehr findet?

EWeiss 21. Apr 2009 10:37

Re: Breakpoint problem
 
Zitat:

Zitat von himitsu
ist die ImageBase noch frei,
also kann es sein, daß die DLL wo anders im Speicher geladen wird (da der Platz schon belegt ist) und Delphi diese dann einfach nicht mehr findet?

Wüßte jetzt nicht wie ich das testen soll :)
Die Funktionen gehen alle kann nur nicht debugen.
Das ist schlecht bei eventueller Fehler suche.

gruss Emil

himitsu 21. Apr 2009 10:47

Re: Breakpoint problem
 
-> Speicherbereich einer Anwendung ermitteln
-> Tutorials und Kurse -> IMAGEBASE - wichtiges zu DLL und Co.
-> eventuell könnte man auch mal schnell 'nen RamEditor (Hier im Forum suchenHxD) oder andere AnalyseTools nutzen

nja, ansonsten wär's wohl garnicht verkehrt, wenn du diese überhaupt erstmal angibst. :stupid:


aber nicht böse seien, wenn es nix hilft ... der Fehler kann ja och immernoch wo anders liegen :stupid:

EWeiss 21. Apr 2009 11:25

Re: Breakpoint problem
 
Hab mal ein Archiv angehängt vielleicht klappt es ja bei dir.
Kannst ja mal testen wenn du zeit und Lust hast.
Nebenbei das Plugin ist nix besonderes.

habs gelöscht..

gruss Emil

himitsu 21. Apr 2009 15:56

Re: Breakpoint problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt wo ich's grad runterladen wollte :lol:

Im Anhang mal ein schnell zusammengetippter Prototyp eines Programmes, welches die Images (EXE/DLL) der laufenden Pogramme ausließt und anzeigt.

Wenn bei Default IB (default ImageBase) etwas drinsteht, dann wurde die Datei an anderer Stelle geladen.


ich bin jetzt sogar etwas geschockt ...
nahezu alle Trillian-eigenen DLLs wollen zusammen an der $10000000 geladen werden
und in der Ashampoo-FireWall scheinen Delphi/Codegear DLLs verbaut zu sein, ebenso beim HP-Drucker-Zeugs

PS: nicht wundern, die Anzeige ist noch sehr "krank", in ihrer Darstellung :stupid:

EWeiss 21. Apr 2009 16:40

Re: Breakpoint problem
 
Zitat:

Jetzt wo ich's grad runterladen wollte
Dann lad ich es nochmal hoch.

Ist schon sehr seltsam das es nicht funktioniert.
Wie gesagt an BassVis oder der Exe kann es nicht liegen denn es funktioniert
mit meiner vis_BassVis.dll Plugin für Winamp.

Danke für das Sample werde es mir mal anschauen.

EDIT:
Bei deinen Programm liegt die ImageBase auf
$00400000 Example,exe
BassVis und aimp_vis_demo.Dll auf der DefaultIB $00400000
Die ImageBase ist aber bei beiden unterschiedlich.

Aber besser ist du schaust selbst mal nach.
Ist etwas zu hoch für mich was dein Programm da genau macht und anzeigt.

gruss Emil

shmia 21. Apr 2009 17:15

Re: Breakpoint problem
 
Ich kann mich dunkel erinnern, dass wenn der Sourccode oder die Hostanwendung in einen Pfad mit Leerzeichen liegt oder der Pfad nicht den veralteten 8.3-Regeln gehorcht, dass dann der integrierte Debugger irgendwie die Module nicht richtig laden kann.
Dann werden auch keine Breakpoints in der DLL angezeigt.
Man kann dann versuchen das fehlende Modul nochmal zu laden:
Ansicht -> Debug-Fenster -> Module
rechter Mausklick und Symboltabelle neu laden...

Da man das bei jedem neuen Start tun muss ist es besser, gleich darauf zu achten, dass die Pfade der 8.3-Regel entsprechen.
Habe diese Erfahrungen unter Delphi 5 gemacht.

EWeiss 21. Apr 2009 17:39

Re: Breakpoint problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Ich kann mich dunkel erinnern, dass wenn der Sourccode oder die Hostanwendung in einen Pfad mit Leerzeichen liegt oder der Pfad nicht den veralteten 8.3-Regeln
Bild addiert .. ;)
Denke daran liegt es nicht.

gruss Emil

EWeiss 21. Apr 2009 18:53

Re: Breakpoint problem
 
Hab den Fehler gefunden.

Zitat:

oder der Pfad nicht den veralteten 8.3-Regeln
genau umgekehrt ;) mit den alten Regeln 8.3 gehts nicht!

Ich verwende in Bass_Vis GetShortName.
Anscheinend kommt der Compiler damit nicht klar.
Bei langen Pfad kann ich debugen bei 8.3 nicht.

Sehr seltsam das alles.

gruss Emil

himitsu 21. Apr 2009 19:26

Re: Breakpoint problem
 
hmmm, schon komisch


nja, dennoch kann es nicht schaden, wenn die ImageBases angepaßt werden...
am Einfachsten wär es wohl derzeit wenn die beiden DLLs z.B. dahin verschoben werden:

Bass_vis.dpr {$IMAGEBASE $00600000}
aimp_vis_demo.dpr {$IMAGEBASE $006E0000}

einfach in die beiden DPRs nach "library ...;" die Kompileroption eintragen
oder in den Projektoptionen (zumindestens in den neueren Delphiverionen)



gibt es eigentlich die Möglichkeit die Bass_vis.dll neu zu kompilieren?

EWeiss 21. Apr 2009 20:45

Re: Breakpoint problem
 
Zitat:

gibt es eigentlich die Möglichkeit die Bass_vis.dll neu zu kompilieren?
Jo ist ja meine Library

EDIT:
Zitat:

nja, dennoch kann es nicht schaden, wenn die ImageBases angepaßt werden...
Habe es mal gemacht ..
Nur welchen vorteil hat das ?

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.

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