QDAC新增QMapSymbols单元

【转载请注明出处及作者,文章发现问题会随时更新,要保证浏览最新版本,请访问官网:blog.qdac.cc】

QMapSymbols单元是用来支持Delphi/C++ Builder生成的.map文件,通过访问该文件代码段的内容,从而获取程序运行时当前的源代码位置,方便大家跟踪程序中出现的问题。

关于.map文件的格式,请大家参考: Delphi/C++ Builder Map文件格式解析 一文的内容。

QMapSymbols单元导出了LocateSymbol和一个Symbols全局变量,前者实际上是调用了后者的Locate方法,所以你用那一个都可以,二者是等价的。

一段参考代码:

procedure TForm4.Button1Click(Sender: TObject);
var
  AEvent: TNotifyEvent;
  ALocate: TQSymbolLocation;
begin
AEvent := Button1Click;
if Symbols.Locate(TMethod(AEvent).Code, ALocate) then
  ShowMessage('地址:' +
    IntToHex(NativeInt(ALocate.Addr), SizeOf(NativeInt) shl 1) + #13#10 + '命名空间:'
    + ALocate.UnitName + #13#10'文件名:' + ALocate.FileName + #13#10'函数:' +
    ALocate.FunctionName + #13#10 + '行号:' + IntToStr(ALocate.LineNo))
else
  ShowMessage('未找到');
end;

 

分享到: