Try to create an stack translator
"Fabio Negrini" <[email protected]>
| Newsgroups | gmane.comp.lang.delphi.jedi |
|---|---|
| Message-ID | <[email protected]> |
Hi,
Im usinf JEDI components to create information of the stack and then save
it into a text file.
When the Map file is together, the file have all informations (address, unit
name, proc name, line number, etc) but I can't distribute the MAP file for
each version. When the the application don't have the MAP the text file
comes just with the adresses.
So I am trying to create an application which reads the file with the
adresses and, with the MAP file I can translate the adresses to unit names,
proc names, line numbers, etc. But doesn't work because the adresses listed
on the text file are different of their correspondent on the map file.
Source Code...
// Save the stack into a file
// The MAP file is not available
procedure SaveStack;
var
Stack : TJclStackInfoList;
Result : TStrings;
begin
Result := TStringList.Create;
Stack := TJclStackInfoList.Create(True, 0, nil);
try
Stack.AddToStrings(Result);
Result.SaveToFile('C:\Stack.txt');
finally
Stack.Free;
Result.Free;
end;
end;
// Translator. The idea is get informations of the MAP file
// memStack is a TMemo...
procedure Translate;
var
Map : TJclMapScanner;
Stack : TStrings;
i : integer;
Addr : Cardinal;
function ConverAddress(Hex : string) : Cardinal;
begin
Hex := Copy(Hex, Pos('[',Hex)+1 , Pos(']',Hex)-2);
Result := StrToInt('$'+Hex);
end;
begin
memStack.Lines.Clear;
Map := TJclMapScanner.Create({The MAP File});
try
Stack := TStringList.Create();
try
Stack.LoadFromFile(C:\Stack.txt); // the file create on SaveStack
for i := 0 to Stack.Count-1 do
begin
Addr := ConverAddress(Stack[i]);
try
memStack.Lines.Add(Map.ProcNameFromAddr(Addr));
except
on E:Exception do
memStack.Lines.Add('Invalid Format. '+ E.Message); // when stack
file is invalid
end
end;
finally
Stack.Free;
end;
finally
Map.Free;
end;
end;
Thanks for any help!!!
Fabio Negrini
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/i7folB/TM
---------------------------------------------------------------------~->
To unsubscribe from this group, send an email to:
[email protected]
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/