Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   OutputDebugString (https://www.delphipraxis.net/50642-outputdebugstring.html)

Olli 28. Jul 2005 23:27

Re: OutputDebugString
 
Zitat:

Zitat von Luckie
Habs. Ich arbeite gewöhnlich asl einfacher Benutzer an meinem Rechner. DebugView muss man aber als Administrator starten. Debuge ich jetzt die Anwendung, mus sman sie auch unter dem gleichen Konto starten.

Eigenartig, vielleicht solltest du es dann über eine eigene Anwendung lösen, die als Debugger agiert.

Alternativ gibt es einen Mutex ("DBWIN") und ein entsprechendes MMF, welches den String bekommt. Also das könntest du entsprechend auslesen. Ein Event gab's IMO auch.

Daniel G 28. Jul 2005 23:30

Re: OutputDebugString
 
Ich weiß, die Frage klingt ziemlich bescheuert....

Ist es eigentlich normal, dass Debug View mein Programm nicht "captured", wenn ich es direkt aus der IDE starte?

shmia 29. Jul 2005 09:24

Re: OutputDebugString
 
Zitat:

Zitat von Daniel G
Ist es eigentlich normal, dass Debug View mein Programm nicht "captured", wenn ich es direkt aus der IDE starte?

Ist mir auch schon aufgefallen. Der Grund wird wohl sein, dass schon die Delphi IDE die Daten "captured".
Könnte sein, dass DebugActiveProcess innerhalb von DebugView fehlschlägt.

Olli 29. Jul 2005 10:02

Re: OutputDebugString
 
Zitat:

Zitat von shmia
Ist mir auch schon aufgefallen. Der Grund wird wohl sein, dass schon die Delphi IDE die Daten "captured".
Könnte sein, dass DebugActiveProcess innerhalb von DebugView fehlschlägt.

Nein, hat nix mit dieser Funktion zu tun, sondern vielmehr damit, wie OutputDebugString arbeitet. Wenn der aktuelle Prozess nämlich in einem Debugger läuft, dann wird eine Exception ausgelöst und der Debugger bekommt dank dieser Exception den String (den muß er glaube ich noch auslesen). Wenn der Prozess ohne Debugger läuft, geht alles an den - nennen wir es mal - "Kerneldebugger von Windows".

MaBuSE 29. Jul 2005 10:31

Re: OutputDebugString
 
Zitat:

Zitat von Luckie
Ich beziege mich mal hier auf diesen Beitrag in der Code-Lib: http://www.delphipraxis.net/internal...?p=51157#51157

Kann es sein, dass es dieses Feature in den Personal Versionen nicht gibt? Zu mindest passiert niochts, wenn ich Strg+Alt+V drücke und ein Eventlog finde ich im Menü 'Ansicht' auch nicht. :gruebel:

Ich zitiere mich mal aus dem Tutorial: Debugging in Delphi für Anfänger und Fortgeschrittene

Zitat:

...
Ereignisprotokoll [Strg + Alt + V]
Zeigt das Fenster mit dem Ereignisprotokoll an.
Das Ereignisprotokoll zeigt Prozessbotschaften, Haltepunktbotschaften, OutputDebugString-Botschaften und Fensterbotschaften an. Wenn Du mit der rechten Maustaste auf diese Registerkarte klickst, wird ein Kontextmenü angezeigt, mit dessen Optionen das Ereignisprotokoll gelöscht, in einer Textdatei gespeichert, Kommentare hinzugefügt und Optionen für das Ereignisprotokoll festgelegt werden können
...
OutputDebugString
Mit dieser API Funktion (kernel32.dll) wird beim Debuggen ein Eintrag in das Ereignisprotokoll (s.o.) geschrieben.
Delphi-Quellcode:
procedure OutputDebugString(lpOutputString: PChar); stdcall;
Es ist also eine einfache Möglichkeit Informationen auszugeben, ohne Messageboxen zu benutzen.
Delphi-Quellcode:
OutputDebugString('Test');
Aber wenn OutputDebugString auch in der "Endbenutzerversion" verwendet wird, solltest Du wissen, dass das keine Delphi Funktion ist, sondern ein API Aufruf.
Wenn die Applikation nicht in einem Debugger läuft, werden diese Informationen an den Systemdebugger weitergereicht. Wenn der Systemdebugger nicht aktiv ist, geschieht nichts.
Aber wer möchte schon, dass ein "Fremder" sein Programm debuggt?
...
Das ist der Grund, warum Tools von z.B. Sysinternals auf diese Infos zugreifen können.

Und Nein, man braucht keine Admin Rechte.
Nur das Recht zum Debuggen.

[equote="MSDN - http://www.microsoft.com/technet/arc.../debugtun.mspx "]The first thing to do is to make sure that whatever interactive account you are logged on under has the SE_DEBUG_NAME (debug programs) right. All members of the local Administrators group have this privilege. If you're developing a service, you're probably a member of Administrators already, but you should keep this point in mind if you need to debug a service running on a remote machine.[/equote]

Links:
http://msdn.microsoft.com/library/de...ebugstring.asp

Luckie 29. Jul 2005 10:36

Re: OutputDebugString
 
Zitat:

Zitat von MaBuSE
Und Nein, man braucht keine Admin Rechte.
Nur das Recht zum Debuggen.

Stimmt, bei mir hat diese aber nur der Administartor. Ich sollte sie mir wohl auch mal geben. ;)

Olli 29. Jul 2005 11:21

Re: OutputDebugString
 
Zitat:

Zitat von Luckie
Stimmt, bei mir hat diese aber nur der Administartor. Ich sollte sie mir wohl auch mal geben. ;)

Allerdings, denn auch Delphis Debugger kommt um diese Beschränkungen normalerweise nicht herum.

@MaBuSE: Wenn du auch "in Tutorials" machst, willst du vielleicht bei de-delphi mitmachen? Wir haben vor durch gemeinsame Arbeit einige deutschsprachige Tutorials herauszubringen. An Korrekturlesern mangelt's nicht, aber an Autoren ;) - wenn Interesse, dann bitte PN an mich.

Gruß,


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.
Seite 2 von 2     12   

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