Sun的編譯器cc以及其除錯程式dbx使用

2021-08-30 21:23:37 字數 1287 閱讀 6092

最近參加了乙個專案,因為是做c的,原本以為是使用gcc和gdb來作為編譯和除錯的工具。結果未曾想,開發環境上居然只允許使用cc編譯器,沒用過啊。。引數都不知道,沒辦法,查資料。。啥文的都有,可是苦了俺了。自己忘性大,還是做下紀錄,以備後查。

cc編譯器:

開發除錯常用引數:

-g 輸出帶有除錯資訊的編譯結果

-c 編譯檔案,但是不做連線(link)操作,預設生成與.c檔案同名的.o檔案

-l 指定要是用的lib名稱,如libsocket.so則為 -lsocket

-i 指定要去尋找include標頭檔案的路徑,可以複數指定。

-g 用來指定生成共享庫檔案

-o 用來指定生成的檔名

-m64 sun studio 12開始使用的引數,代替-xarch=v9。通常與-xarch=sparc一起使用

-xcode=[v] 指定程式的abi空間位址的生成方式。在做成shared library時須指定,sun預設為-xcode=abs44,不能用這個引數來生成64位shared library。

參照資料:

例:cc -g -c a.c -lsocket -lnsl

cc -g b.c -o b.so ./a.o

cc -g a.c -i../include/

dbx除錯用工具:

dbx 待除錯可執行檔案

(dbx) 命令列

print 列印指定變數或者表示式的值

run   執行程式

runargs 指定程式執行的引數。例如命令列上要用 ./prog 10 20作為啟動命令的話,則使用(dbx) runargs 10 20進行啟動

watch 監視某個變數的值,在每次stop後會自動顯示出來

stop at 用於指定斷點,主要是某行的斷點。比如 stop at a.c:30 的含義是停止於a.c程式的第30行

stop in 用於指定斷點,主要是針對函式名稱。比如 stop in dosum 的含義是一旦dosum方法被呼叫,則停止

step 步進

step up 完成當前函式,並且停止到呼叫函式的下一行。

cont 繼續執行。(continue)

check 指定rtc檢查內容

-all 指定為全部

-leaks 指定為記憶體洩漏,訪問異常等

-memuse 指定為監視記憶體使用

showleaks 顯示記憶體洩漏等異常資訊

showmemuse 顯示記憶體的使用量

用rtc來進行除錯等操作時,可以在dbx的幫助下,看到是否有記憶體沒有宣告就被訪問,是否有越界訪問等等資訊。

linux上的C C 編譯器和偵錯程式

gnu 的偵錯程式稱為 gdb,該程式是乙個互動式工具,工作在字元模式。在 x window 系統中,有乙個 gdb 的 前端圖形工具,稱為 xxgdb。gdb 是功能強大的除錯程式,可完成如下的除錯任務 設定斷點 監視程式變數的值 程式的單步執行 修改變數的值。在可以使用 gdb 除錯程式之前,必...

主題 C C 編譯器的選用

乙個c 編譯器的不完全列表 2008年11月18日更新 我 bjarne stroustruphttp www.research.att.com bs homepage.html 常常被提問建議的c 編譯器,但是我不做建議,因為那樣看起來很像站在商戰的某一邊。況且,我並不了解每乙個c 編譯器,僅僅知...

c c 中的編譯器命令

在一般的.h標頭檔案中,主要包含以下內容 1.巨集定義,如 ifndef mpeg4format h define mpeg4format h endif 其作用是當此標頭檔案被很多.c c.pp包含時,避免其中定義的全域性變數,被重複定義.ifdefine xx condition endif 其...