AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debug-Ausgabe

Ein Thema von Michael II · begonnen am 30. Sep 2022 · letzter Beitrag vom 1. Okt 2022
Antwort Antwort
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#1

Debug-Ausgabe

  Alt 30. Sep 2022, 17:40
Wenn ich in Delphi 11.2 unter Windows 11 22H2 (Build 22623.730) eines meiner Programme starte, wird mehrfach angezeigt

Zitat:
Debug-Ausgabe:
onecore\net\netprofiles\service\src\nsp\dll\namesp aceserviceprovider.cpp(550)\nlansp_c.dll!642784C8: (caller: 75B6E326) LogHr(11) tid(44f8) 8007277C Der angegebene Dienst ist unbekannt. Der Dienst wurde nicht im angegebenen Namespace gefunden.

Prozess sjOnline.exe (9956)
Wenn ich google, dann sehe ich, dass solche Meldungen beim Debuggen von Windows Programmen unter Windows 11 auftreten - finde aber keine Lösung.

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?
Michael Gasser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Debug-Ausgabe

  Alt 30. Sep 2022, 18:04
https://en.delphipraxis.net/topic/56...in11-debugger/

geht wohl in diese Richtung:
https://learn.microsoft.com/en-us/wi...ce-providers-2

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 MSDN-Library durchsuchenOutputDebugString ist per se aber nicht Schlimmes.
Nutzen wir auch gerne, um aus unserem Programm raus Debug-Infos an den Debugger (ins Log der Delphi-IDE) auszugeben.
$2B or not $2B

Geändert von himitsu (30. Sep 2022 um 18:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Debug-Ausgabe

  Alt 30. Sep 2022, 23:01
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:

outputdebugstring.png
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Debug-Ausgabe

  Alt 30. Sep 2022, 23:20
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.
Michael Gasser
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Debug-Ausgabe

  Alt 1. Okt 2022, 09:55
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);
Michael Gasser

Geändert von Michael II ( 1. Okt 2022 um 10:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Debug-Ausgabe

  Alt 1. Okt 2022, 13:14
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.

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.
Jupp, da hält er auch nur an, wenn der Aufruf aus Felphi kommt,
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:
GetProc
hier wird nichtmal der Import aus der Windows-Unit genommen, sondern die Adresse direkt geholt, also an der Windows.pas vorbei aufgerufen.

MSDN-Library durchsuchenGetHostName ist eine API, die es erst seit Windows 8.1 gibt.
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.
$2B or not $2B

Geändert von himitsu ( 1. Okt 2022 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz