• <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>

            The Way of C++

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              55 Posts :: 0 Stories :: 19 Comments :: 0 Trackbacks

            公告

            The first time i use this blog, i will write something that i learn which i think is worth write down.

            常用鏈接

            留言簿(3)

            我參與的團(tuán)隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            GDB的使用

              當(dāng)程序出錯并產(chǎn)生core 時

              快速定位出錯函數(shù)的辦法

              gdb 程序名 core文件名(一般是core,也可能是core.xxxx)

              調(diào)試程序使用的鍵

              r run 運(yùn)行.程序還沒有運(yùn)行前使用

              c cuntinue 繼續(xù)運(yùn)行。運(yùn)行中斷后繼續(xù)運(yùn)行

              q 退出

              kill 終止調(diào)試的程序

              h help 幫助

              <tab> 命令補(bǔ)全功能

              step 跟入函數(shù)

              next 不跟入函數(shù)

              b breakpoint 設(shè)置斷點(diǎn)。

              用法:

              b 函數(shù)名 對此函數(shù)進(jìn)行中斷

              b 文件名:行號 對此文件中指定行中斷.如果是當(dāng)前文件,那么文件名與:號可以

              省略

              看當(dāng)前斷點(diǎn)數(shù)使用info break.禁止斷點(diǎn)disable 斷點(diǎn)號.刪除delete 斷點(diǎn)號.

              l list 列出代碼行。一次列10 行。連接使用list將會滾動顯示. 也可以在list 后面

              跟上 文件名:行號

              watch 觀察一個變量的值。每次中斷時都會顯示這個變量的值

              p print 打印一個變量的值。與watch不同的是print只顯示一次

              這里在順便說說如何改變一個 value. 當(dāng)你下指令 p 的時候,例如你用 p b,

              這時候你會看到 b 的 value, 也就是上面的 $1 = 15.

              你也同樣可以用 p 來改變一個 value, 例如下指令 p b = 100 試試看,

              這時候你會發(fā)現(xiàn), b 的 value 就變成 100 了:$1 = 100.

              網(wǎng)上抄錄

              基本的使用方法簡介

              前言

              程序代碼中的錯誤可分為數(shù)類,除了最容易除錯的語法錯誤,編譯程序會告訴你錯誤所在外,大部分的錯誤都可以歸類為執(zhí)行時錯誤。GDB 的功能便是尋找執(zhí)行時錯誤。如果沒有除錯程序,我們只能在程序中加入輸出變量值的指令來了解程序執(zhí)行的狀態(tài)。有了 GDB 除錯程序,我們可以設(shè)定在任何地方停止程序的執(zhí)行,然后可以隨意檢視變量值及更動變量,并逐行執(zhí)行程序。

              一個除錯程序執(zhí)行的流程通常是這樣的:

              1. 進(jìn)入除錯程序并指定可執(zhí)行文件。

              2. 指定程序代碼所在目錄。

              3. 設(shè)定斷點(diǎn)后執(zhí)行程序。

              4. 程序于斷點(diǎn)中斷后,可以 (1)檢視程序執(zhí)行狀態(tài);檢視變量值或變更變量值 (2) 逐步執(zhí)行程序,或是全速執(zhí)行程序到下一個斷點(diǎn)或是到程序結(jié)束為止。

              5. 離開除錯程序。

              以下將分為下列數(shù)項分別介紹:

              1. 進(jìn)入 GDB 及指定可執(zhí)行檔

              2. 指定程序代碼所在目錄及檢視程序代碼

              3. 斷點(diǎn)的設(shè)定與清除

              4. 全速及逐步執(zhí)行程序

              5. 檢視及更改變量值

              6. 檢視程序執(zhí)行狀態(tài)

              7. 讀取 Core 文件信息

              進(jìn)入 GDB 及指定可執(zhí)行檔:

              1. 進(jìn)入 GDB 并讀入可執(zhí)行檔 (檔名為 'PROGRAM'),準(zhǔn)備進(jìn)行除錯。

              gdb PROGRAM

              指定程序代碼所在目錄及檢視程序代碼

              1. 增加目錄 DIR 到收尋程序代碼的目錄列表 (如果你的程序代碼和可執(zhí)行檔放在同一個目錄下,就不須指定程序代碼所在目錄。):

              (gdb) directory DIR

              2. 檢視程序代碼,格式計有:

              (gdb) list => 顯示目前執(zhí)行程序代碼前后各五行的程序代碼;或是顯示從上次 list 之后的程序代碼

              (gdb) list function => 顯示該程序開始處前后五行的程序代碼。

              (gdb) list - =>上次顯示程序代碼的前面的十行。

              斷點(diǎn)的設(shè)定與清除

              1. 設(shè)定斷點(diǎn)(指令為 break,可簡寫為 (b),格式計有:

              (gdb) break filename.c:30 => 在 filename.c 的第三十行處停止執(zhí)行。

              (gdb) break function => 在進(jìn)入 function 時中斷程序的執(zhí)行。

              (gdb) break filename.c:function => 在程序代碼檔 filename.c 中的函數(shù) function 處設(shè)定斷點(diǎn)。

              (gdb) break => 在下一個將被執(zhí)行的命令設(shè)定斷點(diǎn)。

              (gdb) break ... if cond => 只有當(dāng) cond 成立的時候才中斷。cond 須以 C 語言的語法寫成。

              2. 顯示各個斷點(diǎn)的信息。

              (gdb) info break

              3. 清除斷點(diǎn)(命令為 clear),格式同 break 。例如 :

              (gdb) clear filename.c:30

              4. 清除斷點(diǎn),NUM 是在 info break 顯示出來的斷點(diǎn)編號。

              (gdb) delete NUM

              全速及逐步執(zhí)行程序

              1. 從程序開頭全速執(zhí)行程序,直到遇到斷點(diǎn)或是程序執(zhí)行完畢為止。

              (gdb) run

              2. 在程序被中斷后,全速執(zhí)行程序到下一個斷點(diǎn)或是程序結(jié)束為止 (continue 指令可簡寫為 c)。

              (gdb) continue

              3. 執(zhí)行一行程序. 若呼叫函數(shù), 則將該包含該函數(shù)程序代碼視為一行程序 (next 指令可簡寫為 n)。

              (gdb) next

              4. 執(zhí)行一行程序. 若呼叫函數(shù), 則進(jìn)入函數(shù)逐行執(zhí)行 (step 指令可簡寫為 s)。

              (gdb) step

              5. 執(zhí)行一行程序,若此時程序是在 for/while/do loop 循環(huán)的最后一行,則一直執(zhí)行到循環(huán)結(jié)束后的第一行程序后停止 (until 指令可簡寫為 u)。

              (gdb) until

              6. 執(zhí)行現(xiàn)行程序到回到上一層程序為止。

              (gdb) finish

              檢視及更改變量值

              1. print 敘述,顯示該敘述執(zhí)行的結(jié)果 (print 指令可簡寫為 p)。如

              (gdb) print a => 顯示 a 變量的內(nèi)容.

              (gdb) print sizeof(a) => 顯示 a 變量的長度.

              2. display 敘述,在每個斷點(diǎn)或是每執(zhí)行一步時顯示該敘述值。如

              (gdb) display a

              3. 更改變量值:

              (gdb) print (a=10) => 將變量 a 的值設(shè)定為 10.

              檢視程序執(zhí)行狀態(tài)

              1. 查看程序執(zhí)行到此時,是經(jīng)過哪些函數(shù)呼叫的程序 (backtrace 指令可簡寫為 bt),也就是查看函數(shù)呼叫堆棧。

              (gdb) backtrace

              讀取 Core 文件信息

              1. 讀入 PROGRAM 及 PROGRAM.CORE 檔,可檢視 Core Dump 時程序變量值及程序流程狀態(tài) 。

              gdb PROGRAM core

              說明:'core' 檔案是由 PROGRAM 檔執(zhí)行后,遇到 Core Dump 時產(chǎn)生的 Core 檔檔名。如果你還需要該 Core 檔,我們建議你將該檔案檔名更改為 PROGRAM.core。在輸入上述命令后,你可以用 GDB 提供的檢視變量值以及檢視程序執(zhí)行狀態(tài)來讀取程序 Core Dump 時的狀態(tài)。
            posted on 2010-03-14 12:45 koson 閱讀(290) 評論(0)  編輯 收藏 引用 所屬分類: Linux
            久久精品99久久香蕉国产色戒| 精品久久一区二区三区| 久久无码AV中文出轨人妻| 免费一级欧美大片久久网| 性高湖久久久久久久久| yellow中文字幕久久网| 国产精品99精品久久免费| 欧美性大战久久久久久| 久久久精品国产亚洲成人满18免费网站 | 777米奇久久最新地址| 久久男人中文字幕资源站| 久久精品毛片免费观看| 久久精品国产日本波多野结衣 | 国产精品久久国产精麻豆99网站| 久久无码精品一区二区三区| 久久综合欧美成人| 91久久精品电影| 女同久久| 国内精品久久久久影院日本| 三级三级久久三级久久| 中文字幕精品无码久久久久久3D日动漫| 粉嫩小泬无遮挡久久久久久| 欧美久久精品一级c片片| 亚洲国产精品久久久久网站| 色婷婷久久久SWAG精品| 人妻精品久久久久中文字幕一冢本| 久久亚洲国产成人精品性色| avtt天堂网久久精品| 久久中文字幕人妻丝袜| 国产精品成人精品久久久| 久久国产色av免费看| 国产激情久久久久影院小草| 天堂无码久久综合东京热| 久久综合久久美利坚合众国| 久久99精品国产一区二区三区| 久久久久噜噜噜亚洲熟女综合| 久久亚洲AV成人出白浆无码国产| 久久久久这里只有精品| 精品熟女少妇aⅴ免费久久| 女人香蕉久久**毛片精品| 久久精品国产一区|