線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2196
推到 Plurk!
推到 Facebook!

BCB 程式撰寫時應該注意的選項

 
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-14 13:01:57 IP:218.32.xxx.xxx 未訂閱
最近遇到許多關於use dynamic RTL & build with runtime packages的問題,現在把它說明白。    build with runtime packages 通常我會建議debug時將這個選項取消,這麽做的原因是程式本身不包含而且不能包含debug訊息。這樣做,也許不利於您trace標準的VCL源碼,例如想看清楚VCL函數y中參數x是如何起作用的時候。但是大多數時候,您這麽做將會發現debuger將您的絕大多數“症狀”歸結給VCL,儘管“病因”就在您的程式碼中(或在其他的Component中)。一旦您發布您的正式版本時,您可以决定是否使用packages。(packages的本質是一個特殊的DLL,不帶runtime packages(靜態)編譯可以讓您的程式脫離Cbuilder獨立執行。),但在debug時,請取消掉。 -------------- 如果不勾選, bcb編譯時將靜態鏈接所有用到的Library下的編輯框內容Disable,也就是說程式不需要執行runtime packages.如果勾選,在選項下的編輯框中可以增加或删除執行時載入的packages。 如果程式用到一個packages中的某個Component,且這個packages並未在編輯框packages列表中,即使Build with runtime packages是勾選的,程式執行時也不需要這個runtime packages。 再進一步,如果勾選build with runtime packages但packages列表編輯框是空的,其結果與沒勾選buider runtime packages是一樣的.對於第三方Component(包括自己編譯的Component)等,其設置也是一樣的。 -------------- use dynamic RTL 這關係到編譯產生的EXE是否需要以下二個文件: borlndmm.dll和 cc3250mt.dll.如果選中Use dynamic RTL,程式執行將在程式EXE所在目錄和windows系統目錄等目錄下搜索此二文件並載入.如果沒有勾選它,將不需要此二文件.不同版本的c builder,可能cc3250mt.dll名稱不一樣,如cb3.0的爲 cp3240mt.dll。 除此之外,debug時需要的選項有: 1. 勾選 Linker/Create debug information, 並取消"Don’t generate state files"。(這樣允許自動裝載函數庫中引用的其它函數所在的目標模組,但會在編譯目錄下産生一個4倍於可執行程式或更大的執行檔),換個角度來說,這樣會加快project link時的速度。 2. 勾選"Compiler/Full debug",我們所需的絕大多數的其餘設置就已經搞定了。將"Code optimization"設爲"None",這樣做實際上告訴編譯器:所有的事情都已做好,只需産生機器碼就行了。而不要爲了提高一點點執行速度嘗試進行其他的最佳化。(當然,一切都完成之後,您可以打開此項。)這樣做的好處是大大降低了debug的難度。因爲程式碼與我們書寫的一樣,沒有被編譯器最佳化過。勾選"debugging/Debug information"以及"Line number information"。並建議勾選"Disable inline expansions"。inline expansions對發布的程式來說很好,但debug時最好還是關掉此項,他只會讓您更頭痛。 然後是"Pascal"標籤,尤其在您的專案裡連接了Pascal單元或使用了Pascal的VCL Component時(若您擁有其Pascal源碼時,編譯器會自動使用此節中的設置重新編譯)。這裡您必須將"Optimization"最佳化選項禁用,然後通常我會勾選"debugging"部分的所有選項。 Tools|Debugger Options…”對話框最下方的"Integrated debugging"打勾。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D ------------------------------- 發表人 - anpino 於 2004/04/14 13:07:03
系統時間:2024-11-23 17:24:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!