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
 
EWeiss
(Gast)

n/a Beiträge
 
#1

DebugViewer von Assarbad

  Alt 10. Mai 2017, 22: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
 


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:39 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