欢迎来到天天文库
浏览记录
ID:1480466
大小:289.50 KB
页数:8页
时间:2017-11-11
《delphi 7 动态链接库dll断点调试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、DELPHI7动态链接库DLL断点调试马根峰(广东联合电子服务股份有限公司,广州510300)1Delphi几个经典版本简介Delphi从1995年的1.0版本,发展到现在的最新的XE3版本,历经N多版本,但最为经典的几个版本个人觉得应属7.0、2007和2010。Delphi7.0应该是Delphi用户最多的版本。Delphi2007是功能就不多说了,归根结底一句话,它是AnsiString的最后一个版本,在Delphi2007中,string类型映射为AnsiString,char类型映射为AnsiChar,Pchar类型映射为PAnsiChar。所以DEL
2、PHI低版本的程序可以较轻松地迁移到DELPHI2007版本。Delphi2007也是Delphi程序员很容易上手的晚期版本。从Delphi2009开始起,到现在的DelphiXE3为止,都是unicode版本。String类型映射为UnicodeString而不是AnsiString,Char类型映射为WideChar,PChar类型映射为PWideChar。由于Delphi7.0、2007和2010在界面上乃至功能上的一些变化,所以在动态链接库DLL断点调试上,有较大的变化。在今后几天的时间中,笔者会以三篇文章来分别详细地介绍Delphi7、2007和201
3、0这三个版本中的DLL断点调试技术。本篇文章来详细地介绍Delphi7中的动态链接库DLL断点调试技术。2DELPHI7的DLL断点设置与DLL调试在DELPHI7.0以及以前的版本中,动态链接库的调试方法如下:点击菜单Run-->Parameters.打开RunParameters窗口,如图1所示。8图1点击菜单Run-->Parameters.打开RunParameters窗口在RunParameters窗口中,在HostApplication中填入宿主程序的完整路径然后选择,如图2所示。8图2在RunParameters窗口中,点击Browse选中宿主程序
4、G:Delphi_Dll_Debug70Magenf_MasterDelphi2007_Dll_Debug.exe设置断点后,输入F9或者点击Run-->Run来运行宿主程序Delphi2007_Dll_Debug.exe,如图3所示8图3设置断点后,输入F9或者点击Run-->Run来运行宿主程序Delphi2007_Dll_Debug.exe在主程序Delphi2007_Dll_Debug.exe窗口对应的文本框中,输入1和2后,然后点击按钮“=”,即进入DLL的断点调试,如图4所示。8图4进入DLL的断点调试1例子中的宿主程序及DLL程序代码---
5、----宿主程序代码-----unitUDllDebug;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls,Buttons,Contnrs,ActiveX,StrUtils;typeTDll_Add=function(int_1,int_2:integer):integer;stdcall;TfrmDllDebug=class(TForm)Edit1:TEdit;Edit2:TEdit;8Label1:
6、TLabel;Edit3:TEdit;BtnAdd:TButton;procedureFormCreate(Sender:TObject);procedureFormClose(Sender:TObject;varAction:TCloseAction);procedureBtnAddClick(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}HInst:Thandle;FDll_Add:TFarProc;functionDll_Add:TDll_Add;//aForeT
7、hread:MuliThread;end;varfrmDllDebug:TfrmDllDebug;implementation{$R*.dfm}procedureTfrmDllDebug.FormCreate(Sender:TObject);beginhinst:=loadlibrary('Magenf_Detail.dll');ifhinst>0thenbeginFDll_Add:=getprocaddress(hinst,pchar('Dll_Add'));ifFDll_Add<>nilthenfunctionDll_Add:=TDll_Add(FDll_A
8、dd)else8mess
此文档下载收益归作者所有