![]() |
Debug-Ausgabe
Wenn ich in Delphi 11.2 unter Windows 11 22H2 (Build 22623.730) eines meiner Programme starte, wird mehrfach angezeigt
Zitat:
Wenn ich mein Programm laufen lasse, dann scheint "alles" zu funktionieren. Dennoch will ich wissen, wieso diese Meldung ausgelöst wird, bevor ich die nächste Version veröffentliche. Ich bin aber offenbar zu doof, in meinem Delphi Code den Auslöser zu finden. Tipps? |
AW: Debug-Ausgabe
![]() geht wohl in diese Richtung: ![]() Entweder in deinem Programm, oder einer von dir verwendeten Komponente, wird ein Provider verwendet, der in deinem Windows 11 nicht registriert ist, oder in deinem Windows ist ein Fehler, wie z.B. eine alte/falsche Registrierung auf einen so nicht existierenden Provider. Eine Debugausgabe ala ![]() Nutzen wir auch gerne, um aus unserem Programm raus Debug-Infos an den Debugger (ins Log der Delphi-IDE) auszugeben. |
AW: Debug-Ausgabe
Liste der Anhänge anzeigen (Anzahl: 1)
Woher das ggf. in deinem Code ausgelöst wird, ist sehr einfach zu finden. Mach selbst mit OutputDebugString eine Ausgabe und debugge in diese Funktion hinein (wenn du bei dem Aufruf ankommst, Assemblerfenster öffnen und in die Jumps mit F7 hinein debuggen bis du an der Funktion selbst ankommst). Dann setze dort einen Haltepunkt. Nun wirst du bei jedem Aufruf der Funktion an deinem Haltepunkt vorbei kommen. Das sieht dann aus wie hier:
Anhang 55424 |
AW: Debug-Ausgabe
Herzlichen Dank euch 2....
Danke für den ICS Link. Ich hatte einen Breakpoint in der Windows.pas gesetzt - aber da hält in diesem Fall natürlich nix. Dass ich eine Ebene tiefer warten kann, kam mir echt nicht in den Sinn. |
AW: Debug-Ausgabe
Windows 11 - Windows 32 Bit - ICS 8.69
Danke nochmals jaenicke für den Debugger Tipp. Ich weiss nun wo aber nicht wieso. Da himitsu einen Link auf eine "ungelöste" DP Meldung von Angus (ICS) gepostet hat, schreib ich rasch wo... Die Debugmeldung wird in OverbyteIcsWinsockImpl.Inc Result := Fgethostname(name, len); - genauer nach einem call in WS2_32.gethostname: - ausgegeben.
Delphi-Quellcode:
function Ics_gethostname(name: PAnsiChar; len: Integer): Integer;
begin if @Fgethostname = nil then @Fgethostname := GetProc('gethostname'); Result := Fgethostname(name, len); end; Beispiel:
Delphi-Quellcode:
uses OverbyteICSWSocket;
showmessage(localiplist.Count.ToString); |
AW: Debug-Ausgabe
Im Windows können sich Programme/Kompoenten registrieren, welche beim Auslösen gewisser Namen helfen sollen.
Und da ist wohl was nicht richtig registriert/aufrufbar. Zitat:
da der Haltepunkt nicht in der Funktion gesetzt wird, sondern auf den JMP in die Import-Tabelle deiner DLL/EXE ... andere DLLs haben ihre eigenen Imports. [edit] Zitat:
![]() Auf diese Weise raucht es nicht gleich beim Programmstart und Windows verhindert den Start, sondern es kommt erst beim Aufruf und man kann im Code drauf reagieren, wenn jemand das Programm in was Uraltem, wie Windows 7, XP usw. ausführen täte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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