版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Good is good, but better carries it.精益求精,善益求善。DELPHI 2010 动态链接库DLL断点调试-DELPHI2010动态链接库DLL断点调试马根峰(广东联合电子服务股份有限公司,广州510300)摘要:本文详细介绍了Delphi2010中的动态链接库DLL断点调试技术关键词:DELPHI2010;Dll断点调试;Delphi几个经典版本简介Delphi从1995年的1.0版本,发展到现在的最新的XE3版本,历经N多版本,但最为经典的几个版本个人觉得应属7.0、2007和2010。Delphi7.0应该是Delphi用户最多的版本。Delphi200
2、7是功能就不多说了,归根结底一句话,它是AnsiString的最后一个版本,在Delphi2007中,string类型映射为AnsiString,char类型映射为AnsiChar,Pchar类型映射为PAnsiChar。所以DELPHI低版本的程序可以较轻松地迁移到DELPHI2007版本。Delphi2007也是Delphi程序员很容易上手的晚期版本。从Delphi2009开始起,到现在的DelphiXE3为止,都是unicode版本。String类型映射为UnicodeString而不是AnsiString,Char类型映射为WideChar,PChar类型映射为PWideChar。由于
3、Delphi7.0、2007和2010在界面上乃至功能上的一些变化,所以在动态链接库DLL断点调试上,有较大的变化。在今后几天的时间中,笔者会以三篇文章来分别详细地介绍Delphi7.0、2007和2010这三个版本中的DLL断点调试技术。本篇文章来详细地介绍Delphi2010中的动态链接库DLL断点调试技术。DELPHI2010的DLL断点设置与DLL调试在DELPHI7.0以及以前的版本中,动态链接库的调试方法如下:点击菜单Run-Parameters.打开RunParameters窗口,如图1所示。图1点击菜单Run-Parameters.打开RunParameters窗口设置图中断点
4、,然后点击F9或者RunRun来运行宿主程序Delphi2007_Dll_Debug.exe,但发现断点无效,如图2所示:图2设置断点后,运行宿主程序Delphi2007_Dll_Debug.exe,断点无效点击Project-Options.,在ProjectOptions窗口中,在DelphiCompilerCompiling属性页中将Debuginformation设置为True,如图3所示:图3在DelphiCompilerCompiling属性页中将Debuginformation设置为True点击Project-Options.,在ProjectOptions窗口中,在Delphi
5、CompilerLinking属性页中将Debuginformation和Includeremotedebugsymbols两项设置为True,如图4所示:图4将Debuginformation和Includeremotedebugsymbols两项设置为True运行宿主程序Delphi2007_Dll_Debug.exe,断点还是无效,如图5所示:图5运行宿主程序Delphi2007_Dll_Debug.exe,发现断点还是无效切换到Delphi的DLL工程文件上,点击ctrl+alt+M,跳出一个名叫Modules的窗体来。左上角显示了宿主程序本身及其它所调用的资源。找到动态链接库Mage
6、nf_Detail.dll项,发现目录没有指向当前DLL所在的目录。点击鼠标右键,选中菜单项“ReloadSymbolTable”如图6所示:图6打开Modules属性页,找到Magenf_Detail.dll项,点击鼠标右键,ReloadSymbolTable重新设置动态链接库Magenf_Detail.dll的位置,选中当前DLL工程Magenf_Detail所在目录的动态链接库Magenf_Detail.dll文件,如图7所示:图7打开Modules属性页,找到Magenf_Detail.dll项,点击鼠标右键,ReloadSymbolTable,重新设置它的位置然后切换到Delphi的
7、属性页Magenf_Detail,发现断点生效,如图8所示:图8点击属性页Magenf_Detail,发现断点生效在Delphi2007_Dll_Debug.exe,输入1和2后点击铵钮“=”,如图9所示:图9在Delphi2007_Dll_Debug.exe,输入1和2后点击铵钮“=”进入DLL断点调试,如图10所示:图10进入DLL的断点调试例子中的宿主程序及DLL程序代码-宿主程序代码-unitUDllDebug;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,
8、StdCtrls,ExtCtrls,Buttons,Contnrs,ActiveX,StrUtils;typeTDll_Add=function(int_1,int_2:integer):integer;stdcall;TfrmDllDebug=class(TForm)Edit1:TEdit;Edit2:TEdit;Label1:TLabel;Edit3:TEdit;BtnAdd:TButton;procedureFormCreate(Sender:TObject);procedureFormClose(Sender:TObject;varAction:TCloseAction);proced
9、ureBtnAddClick(Sender:TObject);privatePrivatedeclarationspublicPublicdeclarationsHInst:Thandle;FDll_Add:TFarProc;functionDll_Add:TDll_Add;/aForeThread:MuliThread;end;varfrmDllDebug:TfrmDllDebug;implementation$R*.dfmprocedureTfrmDllDebug.FormCreate(Sender:TObject);beginhinst:=loadlibrary(Magenf_Detai
10、l.dll);ifhinst0thenbeginFDll_Add:=getprocaddress(hinst,pchar(Dll_Add);ifFDll_AddnilthenfunctionDll_Add:=TDll_Add(FDll_Add)elsemessagedlg(Fatalerror!Functionnotbefound!,mtWarning,mbYes,0);endelsemessagedlg(Fatalerror!Magenf_Detail.dllnotbefound!,mtWarning,mbYes,0);end;procedureTfrmDllDebug.FormClose(
11、Sender:TObject;varAction:TCloseAction);begintryfreelibrary(hinst);exceptend;end;procedureTfrmDllDebug.BtnAddClick(Sender:TObject);varint1,int2,int_return:integer;beginint1:=strToInt(edit1.Text);int2:=strToInt(edit2.Text);int_return:=functionDll_Add(int1,int2);edit3.Text:=intToStr(int_return);end;end
12、.-宿主程序代码-DLL程序代码-libraryMagenf_Detail;ImportantnoteaboutDLLmemorymanagement:ShareMemmustbethefirstunitinyourlibrarysUSESclauseANDyourprojects(selectProject-ViewSource)USESclauseifyourDLLexportsanyproceduresorfunctionsthatpassstringsasparametersorfunctionresults.Thisappliestoallstringspassedtoandfrom
13、yourDLL-eventhosethatarenestedinrecordsandclasses.ShareMemistheinterfaceunittotheBORLNDMM.DLLsharedmemorymanager,whichmustbedeployedalongwithyourDLL.ToavoidusingBORLNDMM.DLL,passstringinformationusingPCharorShortStringparameters.usesSysUtils,Classes;$R*.RESfunctionDll_Add(int_1,int_2:integer):integer;stdcall;varintS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1-2《齐桓晋文之事》(教学设计)-高一语文下学期同步教学教学设计专辑(统编版必修下册)
- 1.2 太阳对地球的影响 教学设计 湘教版(2019)必修一 高一上学期
- 2025-2026学年剪纸教案小班游戏
- 2025-2026学年花钟教学设计英语高中
- 高职建筑消防工程技术专业《消防隐蔽工程验收实务》单元教学设计
- 盲校一年级道德与法治《上课了》课堂教学设计
- 初中九年级英语Unit 2 Culture Shock同步词汇深度解析与运用教案
- 高职应用文写作:助学金申请书差异化策略教案
- 小学二年级科学(湘科版)校园小导游教学知识清单
- 初中英语八年级上册Unit2 Understanding ideas第1课时(默写本)教学设计
- 2025届河南省郑州市外国语高中物理高一第二学期期末统考试题含解析
- DZ∕T 0201-2020 矿产地质勘查规范 钨、锡、汞、锑(正式版)
- 文艺复兴经典名著选读智慧树知到期末考试答案章节答案2024年北京大学
- 多级离心泵培训
- 派出所民警培训课件
- 无人机装调与维修 课件 第二课时 无人机动力系统的安装
- 门急诊运用PDCA循环降低门急诊输液率品管圈QCC持续质量改进成果汇报
- 高压旋喷桩、CFG桩、水泥土搅拌桩、振冲碎石桩计算(2012规范)-PJ
- 安全风险分级管控培训
- 普通地质学教材
- 矿床的成矿系列与区域成矿规律研究
评论
0/150
提交评论