• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            項目中用到的dbx命令的簡單使用方法

            Posted on 2009-03-13 09:39 Prayer 閱讀(1241) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX
            dbx是unix下普遍的源碼調(diào)試工具, 掌握好了dbx的使用,
            無疑象增添了unix下編程的一把利器研究了一下午dbx的
            連機(jī)文檔,發(fā)現(xiàn)dbx很是簡單易用現(xiàn)在簡單介紹一下dbx的
            使用方法,讓更多的朋友免去獨(dú)自研究的苦楚dbx主要用來
            調(diào)試用f77或cc等編譯工具生成的fortran和c語言的源代碼
            當(dāng)然該程序必須在調(diào)試過程中用-g參數(shù)包含入調(diào)試信息,
            比方說我在unix下編寫了一個hello.c的程序:

            void hello();

            main()
            {
            int i,j;

            i=1;
            j=2;
            i=i+1;

            hello();
            printf("%d,%d\n",i,j);
            }

            void hello()
            {
            printf("hello");
            }

            先用cc -o helloexe -g hello.c編譯生成帶調(diào)試信息的helloexe文件
            然后用dbx helloexe來調(diào)試該文件
            顯示dbx)這個dbx下調(diào)試的提示符
            現(xiàn)在還不處在調(diào)試狀態(tài)下,需要首先進(jìn)入調(diào)試狀態(tài),
            這樣泥需要先確定從哪里開始第一次中斷,以便以后的跟蹤調(diào)試
            這里從第7行開始調(diào)試,用命令:
            dbx)stop at 7
            設(shè)置好斷點(diǎn)。
            用如下命令開始運(yùn)行;
            dbx)run
            這時程序運(yùn)行到第7行停止下來,
            并顯示下一行將要執(zhí)行的程序
            7: i=i+1
            這時,你可以用:
            dbx)print i命令來查看i變量的值
            顯示
            1
            或者用printf "%d",i來顯示用c語言格式的輸出。(aix下沒有printf命令)
            對以后比較負(fù)責(zé)的數(shù)組什么的,用
            dbx)duel i方式可能更加顯示的方便。
            以后泥可以用
            dbx)step (step相當(dāng)于trace into,就是可以進(jìn)入線程內(nèi)部,比如本例子中hello()模
            塊)
            或者
            dbx)next (next不進(jìn)入hello()模塊內(nèi)部)
            來執(zhí)行下一行程序。

            dbx)cont 命令可以直接運(yùn)行到結(jié)束。
            dbx中控制命令多多,功能十分強(qiáng)大的。
            查看源碼可以用
            dbx)list begin,end
            就顯示hello.c文件中從begin到end行的所有程序,并且配上了行號。

            dbx)file <filename>可以改變泥要查看的源碼文件名稱.

            下面是查看了dbx的man手冊后對一些常用/使用命令的中文說明
            這些命令對普通的調(diào)試已經(jīng)足夠了,一些多線程的調(diào)試命令就不加以介紹了
            dbx使用指南:
            1:實(shí)用命令
            quit/q 退出
            q 退出
            run arg1 arg2 ... 用參數(shù)運(yùn)行現(xiàn)有進(jìn)程
            r 用上次的參數(shù)再次運(yùn)行
            stop at <line> 在第line行設(shè)斷點(diǎn)
            stop at <proc> 在過程proc被調(diào)用處設(shè)斷點(diǎn)
            cont <singal> 繼續(xù)運(yùn)行到記號(斷點(diǎn)或其他)處
            return 執(zhí)行完目前的進(jìn)程返回
            print <exp> ... 打印表達(dá)式的值
            printf "string",exp,... 用c語言的格式打印結(jié)果
            where 打印當(dāng)前調(diào)試狀態(tài),包括當(dāng)前進(jìn)程等信息
            func <proc> 看當(dāng)前運(yùn)行進(jìn)程名/移動到調(diào)用proc進(jìn)程的母進(jìn)程處
            file <file> 查看的文件切換到file文件處
            list <exp1>,<exp2> 從file文件中列出從exp1行到exp2行
            list <exp>:<int> 列出file文件中從exp行開始的int行
            whatis <variable> 顯示變量的類型
            sh 嶄時進(jìn)入sh狀態(tài)
            sh <shell command> 執(zhí)行一shell命令
            2:常用命令說明
            alias name "string" 把string內(nèi)容定義為一縮略語name
            help section 尋找某指令的幫助
            playback input <file> 從file中調(diào)入調(diào)試命令流
            playback output <file> 輸出file中的調(diào)試命令流
            record input <file> 把調(diào)試過程輸出到file中
            record output <file> 把命令的運(yùn)行輸出保存到file中
            history 顯示歷史命令
            hed 編輯歷史調(diào)試命令
            !<int> 運(yùn)行歷史命令流中第int個命令
            !-<int> 運(yùn)行歷史命令中倒數(shù)第int個命令
            !<string> 運(yùn)行歷史命令流中以string打頭的命令
            !! 重復(fù)上一個命令
            command;command ... 多調(diào)試命令間用";"隔開
            step <int> 向前追蹤<int>步,進(jìn)入線程
            next <int> 向前追蹤<int>步,不進(jìn)入線程
            delete all 清所有斷點(diǎn)
            listobj 列出目前使用的obj單元
            listregions 列出被用到的內(nèi)存區(qū)
            enable <int>/disable <int> 恢復(fù)/禁用<int>號斷點(diǎn)
            catch 顯示所有碰到的記號
            cont at <line> 運(yùn)行直到line行
            intercept all 在所有例外處都中斷
            bx chat 在所有出現(xiàn)char打頭的異常處中斷
            kill <pid> 殺死pid線程
            goto <line> 從line行開始運(yùn)行
            stop <var> 當(dāng)var產(chǎn)生變化時中斷
            stop <proc> 當(dāng)進(jìn)入proc進(jìn)程時中斷
            stop [var] [at <line>] if <exp> 條件中斷
            trace <var> 當(dāng)var變化時輸出其原值和新值
            trace <proc> 當(dāng)進(jìn)入進(jìn)程時打印出母進(jìn)程和參數(shù)
            when if <exp> {command_list} 當(dāng)條件為真時執(zhí)行命令列
            when at <line> [if <exp>] {command_list} 在遇到line行時如果條件為真執(zhí)行命令

            duel <exp> 一種比較好的變量輸出方式
            printregs 輸出所有寄存器的值
            status 當(dāng)前狀態(tài)
            /<string> 向下尋找file中的string字符串
            ?<string> 向上尋找file中的string字符串
            set 設(shè)定或顯示系統(tǒng)參數(shù)值
            久久只有这里有精品4| 亚洲国产精品无码久久久蜜芽 | 曰曰摸天天摸人人看久久久| 青青草国产精品久久| 亚洲精品综合久久| 久久精品夜夜夜夜夜久久| 中文字幕成人精品久久不卡| 久久精品成人免费国产片小草 | 久久99久国产麻精品66| 一本久久久久久久| 亚洲七七久久精品中文国产| 国产精品无码久久综合| 中文字幕无码av激情不卡久久| 国内精品久久久久久久久电影网 | 久久精品国产99久久香蕉| 欧美日韩精品久久免费| 久久久WWW成人| 日韩精品无码久久久久久| 日韩十八禁一区二区久久| 一本色道久久88加勒比—综合| 久久亚洲熟女cc98cm| 久久久综合香蕉尹人综合网| A级毛片无码久久精品免费| 99久久精品日本一区二区免费| 久久精品国产WWW456C0M| 久久香蕉综合色一综合色88| 无码人妻精品一区二区三区久久久 | 久久精品这里只有精99品| .精品久久久麻豆国产精品| 亚洲精品国产字幕久久不卡| 青青草国产97免久久费观看| 久久精品成人免费网站| 99久久99久久精品国产| 狠狠色丁香久久婷婷综合五月| 亚洲精品无码专区久久久| 久久久久久伊人高潮影院| 思思久久好好热精品国产| 精品久久久久久久久免费影院| 香蕉久久AⅤ一区二区三区| 久久综合色之久久综合| 色欲综合久久躁天天躁|