AGB  ·  Datenschutz  ·  Impressum  







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

DebugViewer von Assarbad

Ein Thema von EWeiss · begonnen am 10. Mai 2017 · letzter Beitrag vom 11. Mai 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

DebugViewer von Assarbad

  Alt 10. Mai 2017, 23:04
Ich versuche den Viewer zu initialisieren.
Kein Ahnung wie ich das teil ans laufen bekomme.

Er schreibt

Zitat:
{$DEFINE DEBUGGING}
{$IFDEF DEBUGGING}{$INCLUDE .\Include\Debugging.pas}{$ENDIF DEBUGGING}
ok habe ich gemacht!
Dann kann ich den String den ich debuggen will aus kommentieren
Zitat:
{$IFDEF DEBUGGING}DbgOut('Now displaying message box'){$ENDIF DEBUGGING}
MessageBox(0,nil,nil,0);
wenn ich das Flag
{$DEFINE DEBUGGING}
aus kommentiere.
{!$DEFINE DEBUGGING}

so weit so gut.

Das Problem ist nur sein Include Pas

Delphi-Quellcode:
const
  Debug______szDebugPipeName = '\\.\pipe\AssasDebugView';

function Debug______Format(fmt: string; params: array of const): string;
var
  pdw1, pdw2: PDWORD;
  i: integer;
  pc: PCHAR;
const
  fmtbufsize = 1024;
begin
  pdw1 := nil;
  if High(params) >= 0 then
    GetMem(pdw1, (High(params) + 1) * sizeof(Pointer));
  pdw2 := pdw1;
  for i := 0 to High(params) do begin
    pdw2^ := PDWORD(@params[i])^;
    inc(pdw2);
  end;
  pc := GetMemory(fmtbufsize);
  if Assigned(pc) then
  try
    SetString(Result, pc, wvsprintf(pc, PCHAR(fmt), PCHAR(pdw1)));
  finally
    if (pdw1 <> nil) then FreeMem(pdw1);
    FreeMem(pc);
  end
  else
    Result := '';
end;

function Debug______GetMyName: string;
var
  buf: array[0..260] of char; // 260 = MAX_PATH
  idx: integer;
begin
  ZeroMemory(@buf, sizeof(buf));
  GetModuleFileName(hInstance, @buf, sizeof(buf));
  for idx := sizeof(buf) - 1 downto 0 do
    if buf[idx] = '\then break;
  SetString(result, pchar(@buf[idx]), lstrlen(@buf[idx]));
end;

procedure DbgOut(s: string);
var
  hPipe: THandle;
  pc: PChar;
  numWritten: DWORD;
  temps: string;
const
  bufsize = 4096;
begin
  hPipe := CreateFile(Debug______szDebugPipeName, GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, 0);
  if hPipe <> INVALID_HANDLE_VALUE then
  try
    pc := GetMemory(bufsize);
    if Assigned(pc) then
    try
      temps := Debug______Format('[%s -> PID = %d]: ', [Debug______GetMyName, GetCurrentProcessID]);
      lstrcpyn(pc, @temps[1], bufsize);
      if not (length(s) < (bufsize - lstrlen(pc))) then
        setlength(s, bufsize - lstrlen(pc) - 1);
      lstrcat(pc, @s[1]);
      WriteFile(hPipe, pc^, lstrlen(pc), numWritten, nil);
    finally
      FreeMemory(pc);
    end;
  finally
    CloseHandle(hPipe);
    Sleep(200);
  end;
end;
er meldet hier schon bei
Delphi-Quellcode:
function Debug______Format(fmt: string; params: array of const): string;
var
  pdw1, pdw2: PDWORD;
Zitat:
[DCC Fehler] Debugging.pas(6): E2003 Undeklarierter Bezeichner: 'PDWORD'
ja es sind keine uses, Interface usw. deklariert
da er aber anscheinend einen Grund hatte das nicht zu tun würde ich gerne wissen warum und wie ich das teil ans laufen bekomme.

Ich brauche deinen DebugViewer der was taugt.
Innerhalb der IDE nicht erst später wie von sysinternals

gruss
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: DebugViewer von Assarbad

  Alt 10. Mai 2017, 23:39
unter D7 findest Du ...\SOURCE\RTL\SYS\Types.PAS
mit
Delphi-Quellcode:
type
  TOleChar = WideChar;
  POleStr = PWideChar;
  PPOleStr = ^POleStr;

  PCLSID = PGUID;
  TCLSID = TGUID;

{ 64-bit large integer }

  Largeint = Int64;
  {$EXTERNALSYM Largeint}

// DWORD = LongWord;
// {$EXTERNALSYM DWORD}
  PDWORD = ^DWORD;
  {$EXTERNALSYM PDWORD}
vllt. hilft Dir das weiter.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: DebugViewer von Assarbad

  Alt 10. Mai 2017, 23:43
unter D7 findest Du ...\SOURCE\RTL\SYS\Types.PAS
mit
Delphi-Quellcode:
type
  TOleChar = WideChar;
  POleStr = PWideChar;
  PPOleStr = ^POleStr;

  PCLSID = PGUID;
  TCLSID = TGUID;

{ 64-bit large integer }

  Largeint = Int64;
  {$EXTERNALSYM Largeint}

// DWORD = LongWord;
// {$EXTERNALSYM DWORD}
  PDWORD = ^DWORD;
  {$EXTERNALSYM PDWORD}
vllt. hilft Dir das weiter.

Gruß
K-H
Verstehe ich jetzt nicht.
Das Problem ist das er die Types nicht erkennt weil halt keine Uses eingebunden sind.
Oder sehe ich das falsch ?

EDIT:
Wenn ich die Type einbaue habe ich immer noch riesen Probleme mit anderen Typen.

Siehe shot.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: DebugViewer von Assarbad

  Alt 10. Mai 2017, 23:46
Könnte es nicht sein, das die notwendige Unit standardmäßig eingebunden war/ist ?
Du findest den Typ übrigens auch in der Windows.Pas.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: DebugViewer von Assarbad

  Alt 10. Mai 2017, 23:48
Könnte es nicht sein, das die notwendige Unit standardmäßig eingebunden war/ist ?
Du findest den Typ übrigens auch in der Windows.Pas.

Gruß
K-H
Ja danke..
Aber schau dir mal meinen Shot an.
Wenn ich deine Einbaue meckert er trotzdem noch über 100 andere.
Wie soll diese UNIT funktionieren OHNE Uses ?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: DebugViewer von Assarbad

  Alt 11. Mai 2017, 00:58
Von wann ist sein Programm? Und Assarbads (aka Olli) Sourcen waren schon immer etwas abgedreht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: DebugViewer von Assarbad

  Alt 11. Mai 2017, 01:11
Von wann ist sein Programm? Und Assarbads (aka Olli) Sourcen waren schon immer etwas abgedreht.
2002 so wie ich sehe.

Ich habe es jetzt mal Windows bei den Uses der *.dpr addiert macht keinen unterschied.
Denke das Teil kann man vergessen.

gruss

Geändert von EWeiss (11. Mai 2017 um 01:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: DebugViewer von Assarbad

  Alt 11. Mai 2017, 02:27
Ich habe es jetzt mal Windows bei den Uses der *.dpr addiert macht keinen unterschied.
Die Winapi.Windows Unit muss in allen Units eingebunden werden, in denen du das Debug Include File verwendest. Alternativ könntest du aber auch einfach MSDN-Library durchsuchenOutputDebugString verwenden. Passend dazu gibt es DebugView, sofern du dein Tool nicht aus Delphi heraus starten solltest.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: DebugViewer von Assarbad

  Alt 11. Mai 2017, 02:38
Zitat:
Die Winapi.Windows Unit muss in allen Units eingebunden werden, in denen du das Debug Include File verwendest
Das nutzt nichts direkt beim Start ohne das irgendetwas von der Unit verwendet wird findet er die ganzen Messagen schon nicht.

Zitat:
sofern du dein Tool nicht aus Delphi heraus starten solltest.
Und genau das möchte ich
Außerhalb nutzt es mir leider nichts.

gruss
  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 10:47 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