色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Sco Unix下用dbxtra調試C程序

瀏覽:132日期:2024-06-30 08:16:22

在sco Unix下編程大多離不開C語言,即使是數據庫應用也有很多是與c搭配使用的,例如informix esql/c 就可以在c語言中嵌入sql 語句。很多人認為在unix下寫程序是件很痛苦的事情,其中一個很重要原因是不知道在unix下怎樣調試程序。其實在sco unix源碼調試器是dbxtra或dbXtra,Linux下是gdb。它們類似turbo c的調試器,可以跟蹤源碼變量。在unix 下調試程序有如下傳統方法

一、在要調試語句之前,輸出要調試的變量,利用printf()函數。

二、寫日志文件,把結果輸出到文件中避免屏幕混亂,利用fprintf()函數。

三、利用sco 內置調試器dbxtra或dbXtra。

dbxtra 適用字符界面,在sco unix的圖形界面用dbXtra。(編按:請注意大小寫)

以下是dbxtra基本命令: c cont 在斷點后繼續執行 d delete 刪除所設斷點 h help 幫助 e edit 編輯源程序 n next 源程序區的內容向下翻一屏。 p print 顯示變量 q quit 退出dbxtra r run 運行程序,直到遇上設置的斷點 rr rerun 再次運行 s step 單步運行 st stop 設置斷點 j status 顯示當前斷點 t where 顯示當前狀態,列出所有設置的變量值 di display 開顯示窗,用于查看變量 ud undisplay 刪除顯示窗的條目 f forward 源程序區的內容向上 翻一屏。 B backward 源程序區的內容向下 翻一屏。 Stopi stop inst 設置斷點 tracei trace inst跟蹤子程序

dbxtra [options] [objectfile ] dbxtra 在啟動時有個參數-Idir值得一提.我們在編寫一個較大程序的時候,通常源程序和編譯生成的可執行文件都放在不同的目錄中,這樣便于管理。默認dbxtra將在可執行文件所在的目錄下找匹配c的源程序。當我們啟動時,指定-I參數,dbxtra就會到我們指定的目錄下找匹配的c程序。 例如: dbxtra -I'workc' program1

源程序在用cc編譯時要帶上-g 參數,這樣是加上符號表等調試信息。只有這樣編譯過的文件,dbxtra才可以調試。調試信息使源代碼和機器碼關聯。

下面這個C程序輸出結果和我們的預想結果不一樣,說明某些地方有錯誤。我們用調試器來調試它:

程序一:

t.c main() { int i=10 ,*p1; float j=1.5,*p2; p1=&i; p2=&j; p2=p1; printf('%d,%dn',*p1,*p2); }

首先帶上-g參數編譯 cc -g -o t t.c 啟動調試器 dbxtra t 屏幕顯示: 1.main() 2.{ int i=10 ,*p1; 3. float j=1.5,*p2; 4. p1=&i; 5. p2=&j; 6. p2=p1; 7. printf('%d,%dn',*p1,*p2); 8.} C[browse] File:t.c Func.- Readubg symbolic information Type 'help' for help (dbxtra) (dbxtra)

設置斷點: (dbxtra)stop at 5 運行: (dbxtra) run 程序自動在第5行停下。 這時我們可以看變量的值。 (dbxtra) print *p1

單步執行。 (dbxtra) step 程序將執行第5行源碼,指針將移到第6行。 (dbxtra) print *p2

(dbxtra) step 程序執行了第6行源碼后,將指針移到第7行。 (dbxtra) print *p1 , *p2 我們發現 在執行了第6行源碼后,*p1,*p2的值就不對了,所以問題就出在第6行上。仔細檢查后發現指針p1指向整型,指針p2指向實型。它們之間的賦值要進行強制類型轉換。這種錯誤在C程序中是很常見的。 有時我們在調試一些程序時,要在整個程序運行中時刻監視莫些變量的值,例如程序一中我們要時刻了解*p1,*p2的值,除了在每一行程序執行完后,打print *p1,*p2外,還可以開一個顯示窗口。

(dbxtra)display *p1,*p2

用undisplay 刪掉不想要的變量。

有些程序運行時要帶參數,mycat /etc/passwd 在調試時候

(dbxtra) run '/etc/passwd'

再運行時,無需再寫一遍參數。

(dbxtra) rerun

在涉及到curses庫編程或屏幕有大量的人機界面時,為了調試方便,我們可以把程序輸出結果重定向到個虛屏。

(dbxtra) run >/dev/tty03

當然要先把tty03 disable 掉。(disable tty03)

dbxtra還有很多高級的用法,有興趣的讀者可以參照dbxtra本身的help,進一步研究。

標簽: Unix系統
主站蜘蛛池模板: 黄网在线观看免费网站台湾swag | 亚洲狠狠综合久久 | 国产精品自拍合集 | 国产高清精品在线 | 成人全黄三级视频在线观看 | 国产精品18久久久久久久久久 | 高清精品女厕在线观看 | 欧美一级aa天码毛片 | 日韩毛片基地 | 三级毛片免费看 | 日朝欧美亚洲精品 | 国产精品久久久久久久久 | 日本午夜人成免费视频 | 国产一国产一级毛片视频在线 | 亚洲视频免| 久久精品99 | 免费一级特黄 欧美大片 | 18免费视频| 免费一级a毛片在线播 | 在线精品视频免费观看 | 男性吸女下身的视频 | 亚洲午夜在线观看 | 欧美日本道免费一区二区三区 | 国产精品久久久久久久久久久不卡 | 久久精品成人 | 99精品高清视频一区二区 | 思99re久久这里只有精品首页 | 日韩三级一区 | 亚洲男女在线 | www黄网| 手机在线观看一级午夜片 | 美女黄频免费观看 | 亚洲精品美女在线观看 | 在线91精品国产免费 | 国产网站黄色 | 国内精品免费一区二区观看 | 午夜影院啪啪 | 国产成人yy精品1024在线 | 国产做a爰片久久毛片a | 暖暖免费高清日本一区二区三区 | 国产页 |