色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

DSP編程技巧之5---揭開(kāi)編譯器神秘面紗之調(diào)試與路徑選項(xiàng)

發(fā)布時(shí)間:2014-9-4 16:51    發(fā)布者:看門(mén)狗
關(guān)鍵詞: DSP , 編譯器 , CCS , STAB
作者:paradoxfx 來(lái)源:電子產(chǎn)品世界

  在程序的編寫(xiě)與測(cè)試中,調(diào)試功能是非常重要的,很多時(shí)候我們需要一步步的調(diào)試與觀察才能找到一些隱藏很深的bug,所以要對(duì)編譯器的調(diào)試選項(xiàng)有一些了解,下面我們首先看一下編譯器的調(diào)試選項(xiàng)都有哪些。

  表1 編譯器的調(diào)試選項(xiàng)
選項(xiàng)
別名
優(yōu)化的效果
--symdebug:dwarf-g
-g是默認(rèn)選項(xiàng),在缺省情況下,大多數(shù)程序和庫(kù)都是帶調(diào)試符號(hào)(gcc  參數(shù) -g)編譯的。當(dāng)調(diào)試一個(gè)帶調(diào)試符號(hào)的程序時(shí),調(diào)試器不僅能給出內(nèi)存地址,還能給出函數(shù)和變量的名字。產(chǎn)生符號(hào)調(diào)試信息并不會(huì)影響程序的優(yōu)化效果。
注:DWARF是一種很復(fù)雜的二進(jìn)制文件格式,它和和 STAB 格式是使用最廣泛的兩種可執(zhí)行和鏈接格式 (ELF)。DWARF(使用任意記錄格式調(diào)試)是面向 ELF  文件的一種較新的格式。創(chuàng)建該格式是為了彌補(bǔ) STAB 中的一些缺陷,從而能夠提供更詳細(xì)、更簡(jiǎn)便的數(shù)據(jù)結(jié)構(gòu)描述、變化的數(shù)據(jù)移動(dòng)和復(fù)雜的語(yǔ)言結(jié)構(gòu),比如 C  中的語(yǔ)言結(jié)構(gòu)。調(diào)試信息存儲(chǔ)在對(duì)象文件的各個(gè)部分中。這種格式是可執(zhí)行程序與源代碼之間關(guān)系的簡(jiǎn)單表示,為了便于調(diào)試器對(duì)該關(guān)系進(jìn)行處理。對(duì)此感興趣的網(wǎng)友可以搜索《The  DWARF Debugging Standard》標(biāo)準(zhǔn)仔細(xì)閱讀,或者參考IBM的網(wǎng)頁(yè)說(shuō)明http://www.ibm.com/developerworks/cn/opensource/os-debugging/。
--symdebug:coff 
使用交替的STABS調(diào)試格式來(lái)使能符號(hào)調(diào)試;調(diào)試信息的傳統(tǒng)格式被稱(chēng)為  STAB(符號(hào)表)。STAB 調(diào)試格式是一種記錄不完整的半標(biāo)準(zhǔn)格式,用于調(diào)試 COFF 和 ELF  對(duì)象文件中的信息。調(diào)試信息是作為對(duì)象文件的符號(hào)表的一部分進(jìn)行存儲(chǔ)的,因此復(fù)雜性和范圍是有限的。
使用這種格式的目的是為了與一些很古老的調(diào)試器或者用戶(hù)自定義的調(diào)試工具進(jìn)行兼容,因?yàn)檫@些工具往往不兼容新的DWARF格式。
使用這個(gè)選項(xiàng)有可能會(huì)對(duì)程序的優(yōu)化造成影響,因?yàn)闉榱耸褂肧TAB格式下的調(diào)試功能,有些代碼需要被保留而無(wú)法優(yōu)化。
--symdebug:none 
禁止所有的符號(hào)調(diào)試信息。
不建議使用這個(gè)選項(xiàng),因?yàn)樗昧苏{(diào)試功能,并使得程序的性能分析變得非常困難。比如說(shuō)我們測(cè)算代碼的運(yùn)行時(shí)間的時(shí)候,就需要在代碼中插入斷點(diǎn)使用調(diào)試功能完成測(cè)算。
--symdebug:profile_coff 
使用交替的STABS調(diào)試格式來(lái)進(jìn)行程序的性能分析。
在CCS里,使用這個(gè)選項(xiàng)可以在函數(shù)級(jí)別上插入斷點(diǎn)并估算程序運(yùn)行時(shí)間,但是不能使用單步調(diào)試功能。
--symdebug:skeletal
已經(jīng)廢棄的參數(shù),不再建議使用,即使使能也不產(chǎn)生任何效果。
--optimize_with_debug
-mn
已經(jīng)廢棄的參數(shù),不再建議使用,即使使能也不產(chǎn)生任何效果。
--symdebug:keep_all_types
這是一個(gè)編譯器的高級(jí)調(diào)試選項(xiàng),它用來(lái)保持未參考的類(lèi)型信息。也就是說(shuō),使能這個(gè)選項(xiàng)之后,可以在調(diào)試時(shí)觀察定義包含在COFF可執(zhí)行文件中,但是沒(méi)有被任何地方引用的符號(hào)(默認(rèn)情況下這樣的符號(hào)是不具有調(diào)試信息的,使能調(diào)試之后變可以進(jìn)行一些調(diào)試相關(guān)的工作了)。

  調(diào)試選項(xiàng)看起來(lái)非常復(fù)雜,不過(guò)通過(guò)前面幾次的講解也可以看出,這些名字特別長(zhǎng),并且一般情況下沒(méi)有別名(縮寫(xiě)名)的選項(xiàng),基本都是輸入高級(jí)選項(xiàng),對(duì)于一般使用者來(lái)說(shuō)的話,我們的主要目的不是去關(guān)心它編譯過(guò)程中有多么復(fù)雜的信息,只要利用它的結(jié)果,所以一個(gè)-g選項(xiàng)就能滿足大多數(shù)情況的使用了。

  然后針對(duì)初學(xué)者經(jīng)常遇到的找不到頭文件或者宏定義的問(wèn)題,這個(gè)貌似是大多數(shù)初學(xué)者在新建工程時(shí)、添加完文件然后編譯程序時(shí)都會(huì)遇到的:明明看見(jiàn)頭文件它就在那里了,可是編譯器就是不認(rèn)識(shí)它;或者在CCS里面已經(jīng)打開(kāi)了頭文件能看到內(nèi)容了,可是編譯器一直在提示xxx.h頭文件打不開(kāi)。因?yàn)轭^文件里定義了各種各樣的變量、結(jié)構(gòu)體、宏定義甚至函數(shù)聲明等,所以一個(gè)頭文件找不到的話往往會(huì)帶來(lái)幾十個(gè)上百個(gè)“未定義”相關(guān)的錯(cuò)誤。在此我們就看一下編譯器的包含選項(xiàng),理解了它的使用方法,自然就不會(huì)再遇到類(lèi)似的問(wèn)題了。

  表2 編譯器的包含選項(xiàng)

選項(xiàng)
別名
優(yōu)化的效果
--include_path=directory-I
用來(lái)定義引用頭文件時(shí)#include中文件的路徑。這個(gè)不難理解,基本上就是指代我們?cè)诔绦蛑幸妙^文件時(shí)制定的頭文件的路徑。初學(xué)者經(jīng)常遇到的問(wèn)題就是頭文件找不到,然后出現(xiàn)一大堆的調(diào)試錯(cuò)誤,所以要掌握這個(gè)選項(xiàng)。
Ø  在引用頭文件時(shí),如果使用雙引號(hào)”xxx.h”進(jìn)行引用的話,則編譯器在編譯時(shí)按照下面的順序和路徑依次進(jìn)行尋找:
1.  從任何引用了xxx.h的源程序所在的文件夾里進(jìn)行搜索。所以在編譯時(shí)如果提示缺失xxx.h文件,最快捷的方法就是找到這頭文件把它放在源程序所在的文件夾里(當(dāng)然這樣不利于有條理地管理工程文件)。
2. 從-I參數(shù)中所制定的路徑里面搜索。
3.  從安裝CCS時(shí)生成的C2000_C_DIR環(huán)境變量指向的路徑里面搜索。
Ø  在引用頭文件時(shí),如果使用尖括號(hào)進(jìn)行引用的話,則編譯器在編譯時(shí)按照下面的順序和路徑依次進(jìn)行尋找:
1. 從-I參數(shù)中所制定的路徑里面搜索。
2.  從安裝CCS時(shí)生成的C2000_C_DIR環(huán)境變量指向的路徑里面搜索。
觀察兩種頭文件引用方法的共同點(diǎn),我們可以得出,除了系統(tǒng)自帶的頭文件,例如這樣的我們不需要管它之外,我們自己定義和使用的頭文件一定要使用-I參數(shù)把路徑定義好,就不會(huì)再有什么頭文件打不開(kāi)、不存在之類(lèi)的錯(cuò)誤了。那如果頭文件有多個(gè)路徑進(jìn)行存儲(chǔ)怎么辦呢?只要多次使用-I參數(shù)就行了,例如:
-i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include"
--preinclude=filename
在編譯開(kāi)始時(shí)指定源程序的文件名filename。這個(gè)選項(xiàng)主要用來(lái)建立標(biāo)準(zhǔn)的宏定義。這些文件名的搜索也按照-I定義的路徑來(lái)進(jìn)行,并按照制定的順序編譯。


本文地址:http://www.54549.cn/thread-132575-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表