• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

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

            Posted on 2009-03-13 09:39 Prayer 閱讀(1235) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX
            dbx是unix下普遍的源碼調試工具, 掌握好了dbx的使用,
            無疑象增添了unix下編程的一把利器研究了一下午dbx的
            連機文檔,發現dbx很是簡單易用現在簡單介紹一下dbx的
            使用方法,讓更多的朋友免去獨自研究的苦楚dbx主要用來
            調試用f77或cc等編譯工具生成的fortran和c語言的源代碼
            當然該程序必須在調試過程中用-g參數包含入調試信息,
            比方說我在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編譯生成帶調試信息的helloexe文件
            然后用dbx helloexe來調試該文件
            顯示dbx)這個dbx下調試的提示符
            現在還不處在調試狀態下,需要首先進入調試狀態,
            這樣泥需要先確定從哪里開始第一次中斷,以便以后的跟蹤調試
            這里從第7行開始調試,用命令:
            dbx)stop at 7
            設置好斷點。
            用如下命令開始運行;
            dbx)run
            這時程序運行到第7行停止下來,
            并顯示下一行將要執行的程序
            7: i=i+1
            這時,你可以用:
            dbx)print i命令來查看i變量的值
            顯示
            1
            或者用printf "%d",i來顯示用c語言格式的輸出。(aix下沒有printf命令)
            對以后比較負責的數組什么的,用
            dbx)duel i方式可能更加顯示的方便。
            以后泥可以用
            dbx)step (step相當于trace into,就是可以進入線程內部,比如本例子中hello()模
            塊)
            或者
            dbx)next (next不進入hello()模塊內部)
            來執行下一行程序。

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

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

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

            duel <exp> 一種比較好的變量輸出方式
            printregs 輸出所有寄存器的值
            status 當前狀態
            /<string> 向下尋找file中的string字符串
            ?<string> 向上尋找file中的string字符串
            set 設定或顯示系統參數值
            97久久精品午夜一区二区| 久久久久久精品免费看SSS| 99久久精品国内| 99热热久久这里只有精品68| 久久久99精品成人片中文字幕| 久久精品国产亚洲AV不卡| 久久99这里只有精品国产| 欧美黑人激情性久久| 94久久国产乱子伦精品免费| 伊人热热久久原色播放www| 潮喷大喷水系列无码久久精品 | 久久受www免费人成_看片中文| 99久久国产亚洲综合精品| 99久久亚洲综合精品成人| 99久久国产精品免费一区二区| 久久99精品久久久久久| 国产精品久久久久久五月尺| 久久精品国产亚洲网站| 一本一本久久A久久综合精品| 国产精品VIDEOSSEX久久发布| 伊人久久大香线蕉av不卡| 国产午夜精品理论片久久| 久久精品无码一区二区无码| 久久综合视频网| 亚洲国产成人久久综合野外| 中文字幕成人精品久久不卡| 久久婷婷五月综合色高清| 久久久久久久免费视频| 亚洲综合久久夜AV | 欧美精品福利视频一区二区三区久久久精品 | 久久综合亚洲色HEZYO社区| 久久国产免费直播| 精品人妻伦九区久久AAA片69| 久久91亚洲人成电影网站| 国产产无码乱码精品久久鸭| 欧美va久久久噜噜噜久久| 日韩精品久久久久久久电影蜜臀| 精品国产乱码久久久久软件| 老男人久久青草av高清| 亚洲国产精品无码久久久秋霞2 | 久久精品国产精品青草app|