Delphi編譯 除錯的路徑搜尋方案

2021-10-05 07:12:41 字數 1095 閱讀 1015

delphi編譯、除錯的路徑搜尋方案

現在還經常有同事和朋友問我怎麼編譯不了程式,或斷點不起作用等等問題,今天索性就把我知道的東西整理出來供需要的朋友參考參考。由於這部分東西沒發現有正式文件說明,只是本人靠經驗摸索出來的,所以不能保證肯定正確無誤,講的不對的地方就請指出來。

1. delphi編譯的時候,對於需要用到的單元檔案是按著先搜尋.pas檔案後搜尋.dcu檔案的順序進行。就是說先搜尋.pas檔案,如果.pas檔案沒有搜尋到,然後再搜尋相應的.dcu檔案。如果都沒有找到,編譯器就會報找不到***.dcu檔案的錯誤。      2. 對應編譯、除錯的搜尋路徑是按著"專案檔案--》專案搜尋路徑--》ide環境library路徑--》系統環境變數裡的路徑"的順序進行搜尋。所以提示找不到.dcu的時候,只要看看.pas檔案或.dcu檔案是否在上面的這些路徑裡,如果不在,在合適的地方把檔案路徑新增進去即可。注意:搜尋路徑的順序很重要,不是危言聳聽。      3. 至於不能斷點的問題,基本可以確定是沒有找到.pas檔案或沒有找到"含有debug資訊"的.dcu檔案。這裡著重強調含有debug資訊的.dcu檔案是因為delphi預設搜尋路徑"$(delphi)\lib"下的vcl原始碼的.dcu檔案是不含debug資訊的,這也就是為什麼預設情況下vcl原始碼斷不下來的原因。細心的人會發現"$(delphi)\lib"下有個"debug"的資料夾,而且裡面也都是vcl原始碼對應的.dcu檔案,這些就是含有debug資訊的.dcu檔案。所以只要能找到這些.dcu檔案就可以除錯vcl原始碼了。   有些人會說只要"user debug dcus"就可以除錯vcl原始碼了,說的不錯,確實如此,但選擇這個選項歸根結底還是把"$(delphi)\lib\debug"新增到了搜尋路徑裡,並且優先於其他路徑進行搜尋,所以就能除錯vcl原始碼了。開啟"debugger options"就可以看到"debug dcu path:"下面寫的就是"$(delphi)\lib\debug",看到這估計能明白怎麼回事了吧。   當然你也可以直接把"$(delphi)\lib\debug"新增到搜尋路徑,或者直接把vcl原始碼.pas檔案的路徑新增到搜尋路徑,記住一定要位於"$(delphi)\lib\"的前面,這樣就可以對vcl原始碼進行除錯了。除錯其他控制項的原始碼跟這類似。      方法各種各樣,只要明白了怎麼回事,什麼問題都可以解決。

轉哉:

Delphi 的編譯指令

1.ifdef 等同於 if defined 它們的結束分別是 endif ifend 例子中的 ver200 是 delphi 2009 的標識.begin showmessage 這是 delphi 2009 showmessage 這是 delphi 2009 end 2.ifndef 等同於...

GCC編譯時指定動態庫搜尋路徑

補充檢視編譯好的動態庫或者程序的rpath的方法 動態庫的搜尋路徑的順序 參考資料 gcc中的rpath引數可以用編譯時指定動態庫的搜尋路徑,這樣執行時就不需要export ld library path了。編譯時增加引數 wl,rpath 編譯時增加引數 wl,z,origin wl,rpath ...

gcc編譯選項 I與搜尋路徑(下)

一 點睛 本實戰驗證雙引號包含標頭檔案時的搜尋次序。二 實戰 1 建立4個test1.件 root localhost test find name test1.h root c ch02 2.11 test test1.h root c ch02 2.11 inc test1.h usr incl...