DELPHI_7_動態(tài)鏈接庫DLL斷點(diǎn)調(diào)試_第1頁
DELPHI_7_動態(tài)鏈接庫DLL斷點(diǎn)調(diào)試_第2頁
DELPHI_7_動態(tài)鏈接庫DLL斷點(diǎn)調(diào)試_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、DELPHI 7 動態(tài)鏈接庫 DLL 斷點(diǎn)調(diào)試馬根峰( 廣東聯(lián)合電子服務(wù)股份有限公司 , 廣州 510300)1 Delphi 幾個經(jīng)典版本簡介Delphi 從 1995 年的 版本,發(fā)展到現(xiàn)在的最新的 XE3 版本,歷經(jīng) N 多版本,但最為經(jīng) 典的幾個版本個人覺得應(yīng)屬、2007 和 2010。Delphi 應(yīng)該是 Delphi 用戶最多的版本。Delphi 2007 是功能就不多說了,歸根結(jié)底一句話,它是 AnsiString 的最后一個版本, 在 Delphi 2007 中, string 類型映射為 AnsiString , char 類型映射為 AnsiChar , Pchar 類型

2、映射為PAnsiChar。所以DELPHI低版本的程序可以較輕松地遷移到DELPHI 2007版本。Delphi 2007 也是 Delphi 程序員很容易上手的晚期版本。從 Delphi2009 開始起,到現(xiàn)在的 Delphi XE3 為止,都是 unicode 版本。 String 類型映 射為 UnicodeString 而不是 AnsiString , Char 類型映射為 WideChar, PChar 類型映射為 PWideChar。由于 Delphi 、2007 和 2010 在界面上乃至功能上的一些變化,所以在動態(tài)鏈接庫 DLL 斷點(diǎn)調(diào)試上,有較大的變化。在今后幾天的時間中,筆

3、者會以三篇文章來分別詳細(xì)地介紹 Delphi 7 、 2007 和 2010 這三個版本中的 DLL 斷點(diǎn)調(diào)試技術(shù)。本篇文章來詳細(xì)地介紹 Delphi 7 中的動態(tài)鏈接庫 DLL 斷點(diǎn)調(diào)試技術(shù)。2 DELPHI 7 的 DLL 斷點(diǎn)設(shè)置與 DLL 調(diào)試 在 DELPHI 以及以前的版本中,動態(tài)鏈接庫的調(diào)試方法如下:點(diǎn)擊菜單 Run-'Parameters.打開 Run Parameters窗口,如圖 1 所示。圖 1 點(diǎn)擊菜單 Run-'Parameters.打開 Run Parameters窗口在Run Parameters窗口中,在 Host Application中填入宿

4、主程序的完整路徑然后選擇,如圖2所示。圖 2 在 Run Parameters 窗 口中, 點(diǎn)擊 Browse 選中宿主程序G:Delphi_DII_Debug70Mage nf_Master設(shè)置斷點(diǎn)后,輸入 F9或者點(diǎn)擊Run->Run來運(yùn)行宿主程序,如圖3所示-旦昱7 Delphi. Y -*11 LkiIJ i AEEE33 赴斗|Cidrliiire | WrU 5v:*mt站匚:Hi血 | Dj:半*了 BT'E | ADD2世ee$勺丁叔話HI汀建赳國伺Qfw翻出g'差蠶圖3設(shè)置斷點(diǎn)后,輸入 F9或者點(diǎn)擊Run->Run來運(yùn)行宿主程序輸入1和2后,然后點(diǎn)

5、擊按鈕“=”,即進(jìn)入DLL的斷在主程序窗口對應(yīng)的文本框中, 點(diǎn)調(diào)試,如圖4所示。7 MlY - ft±nif_Deill Ai v-J JZL圖4進(jìn)入DLL的斷點(diǎn)調(diào)試3例子中的宿主程序及DLL程序代碼宿主程序代碼-unit UDIIDebug;in terfaceusesWin dows. Messages, SysUtils, Varia nts. Classes, Graphics, Con trols, Forms,Dialogs, StdCtrls, ExtCtrls, Butt on s,Contnrs , ActiveX, StrUtils ;typeTDII_Add=f

6、u nctio n(i nt_1,i nt_2:i nteger):i nteger;stdcall;TfrmDllDebug = class(TForm)Edit1: TEdit;Edit2: TEdit;Label1: TLabel;Edit3: TEdit;BtnAdd: TButton;procedure FormCreate(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure BtnAddClick(Sender: TObject);private Priv

7、ate declarations public Public declarations HInst:Thandle;FDll_Add:TFarProc;functionDll_Add:TDll_Add;fmprocedure (Sender: TObject); beginhinst:=loadlibrary('');if hinst>0 thenbeginFDll_Add:=getprocaddress(hinst,pchar('Dll_Add');if FDll_Add<>nil thenfunctionDll_Add:=TDll_Add(

8、FDll_Add)elsemessagedlg('Fatal error! Function not be found!',mtWarning, mbYes, 0) ;endelsemessagedlg('Fatal error! not be found!',mtWarning, mbYes, 0) ;end; procedure (Sender: TObject; var Action: TCloseAction); begintryfreelibrary(hinst); except end;end;procedure (Sender: TObject);

9、varint1,int2,int_return:integer;beginint1:=strToInt; int2:=strToInt;int_return:=functionDll_Add(int1,int2); :=intToStr(int_return);end;end. 宿主程序代碼 DLL 程序代碼 library Magenf_Detail; Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your pr

10、oject's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL-even those that are nested in records and classes. ShareMem is the interface unit to the shared memory manager, which must be deployed along with your DLL. To avoid using , pass string information using PChar or ShortString parameters. usesSysU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論