【转载请注明出处及作者,文章发现问题会随时更新,要保证浏览最新版本,请访问官网: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;