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