亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

掌握C++ builder的除錯藝術(2).2

2019-09-06 23:33:48
字體:
來源:轉載
供稿:網友

                    掌握c++builder的除錯藝術

第二篇-近距離觀察(2)

使用evaluate/modify(求值/修改)

最后一種顯示變量或代碼塊的值的途徑是evaluate/modify(求值/修改)窗口。這個窗口可以象打開巡視器一樣打開,在您要evaluate/modify(求值/修改)的代碼行上右擊選擇"debug|evaluate/modify"就會彈出evaluate/modify(求值/修改)窗口。本窗口用來對表達式/變量求值并/或修改。watches和/或inspectors也可以實現同樣的功能。但如果您想要修改的話,這里恐怕是最好的地方。

“察看變量已經聽夠了,現在我想去看看我的代碼到底怎么了,而不是干坐在這里。”我聽見您如是說。下一節我們將在函數體內外單步跟蹤直至斷點(還記得前面的東西么?)。

在代碼塊內外進行stepping(單步執行/跟蹤)

在此有一件事要牢記,前面講的絕大多數察看變量的辦法是動態更新的。所以當您跟蹤至新的一行的時候,變量的值會被自動重新求值,并且顯示在窗口中的值被更新成新的當前值。

okay,當您點擊您所設置的斷點時,您會看到您所需檢查的變量。下一步就是在代碼中單步執行并且近距離觀察實際發生的與您所猜測的是否一致(通過使用watches/inspectors并跟隨代碼的執行路徑前進)。

stepping的類型

這部分解釋起來似乎很簡單。但下面的大部分都是來討論您用這些能做什么(好像在別處沒有聽到過?)。您可以告訴調試器五種"stepping types"(單步執行類型)。我們會按run菜單上的順序來解釋。我同時會給出它們的快捷鍵。在調試時使用快捷鍵的次數會多過使用菜單選項的(比較按10次鍵盤與選10次菜單,我想您知道什么更好)。

第一種是"step over"(在函數體外單步執行)或者f8。這會讓調試器執行代碼至當前函數的下一行可見的代碼停下,或者當運行至當前函數的最后一行時,調試器返回至調用函數停下。在您知道所調用的函數沒有問題時,stepping over功能很方便。

下一個是"trace into"(跟蹤至函數體內)或f7。如果運行的當前行是調用一個函數,調試器將把我們帶到調用的函數的第一行(即使是隱含調用函數,例如一個write屬性)。否則執行至當前行的下一行。當您想看看這個函數到底做些什么時,這個功能非常方便。

接下來是"trace to next source line"(跟蹤至下一個源代碼行)或shift-f7。調試器會運行至下一個具有調試信息的代碼行。這與"trace into"的區別,讓我們舉例來說明吧。當我們調用一個沒有源代碼的windows api函數并且這個api函數調用了我們代碼中的一個回調函數。"trace to next source line"將在回調函數的第一行停下來,而"trace into"會忽略這個回調函數并在當前程序的下一行停下來。

然后是"run to cursor"(運行至光標處)或f4。調試器將運行代碼直至光標所在的行。這使得不需設置斷點又可以跳過大片代碼變得很方便(考慮只需停頓一次的情況)。

還有"run until return"(運行至返回)或shift-f8。調試器將運行代碼直至當前函數返回調用他的函數。當您不想手工單步執行至函數結束(假如您陷入一個循環中的話,這個過程會變的十分冗長)時,這么做就會很方便的跳到函數的結尾處。

最后一個是"program reset"(程序重置)或ctrl-f2。調試器會中斷已運行的程序并返回至調試器。除非迫不得已不要這么做,因為對象所使用的資源沒有被釋放!!!(在一個數據庫應用程序中,這樣做2-3次后,您將不得不關閉并重啟ide,因為bde內部資源將耗盡。您已經被警告啦)。當您不得不中止可執行程序時,這非常有用。

最后(卻在菜單很上面的位置)是"run"(運行)或f9。調試器將運行至程序結束,除非碰到您點擊新的斷點或發生異常。

stepping的注解

要牢記的是所有這些單步執行方式在調試器通過斷點時,調試器會對斷點求值,若斷點需要就停下。如果出現異常,調試器也會停下。

正如您所見,在正確的地方設置斷點,察看變量并在代碼中單步跟蹤,我們能夠以非常近的距離觀察程序在做什么就好象它真的運行一樣。這些功能在追查最困難的bugs---邏輯bug時,相當方便。

其他提示

如果您真的很勇猛并有匯編語言的經驗,您可以點擊"view|debug windows|cpu"打開一個"cpu view"cpu窗口。這里不僅顯示了當前可執行程序的指令的匯編指令,還有象cpu標志、寄存器的內容和不斷更新的內存印象

使用call stack ("view|debug windows|call stack")可以很方便的找出發生異常之前或遇到斷點之前的函數調用歷史。記住,這里只是顯示什么函數被什么函數調用過,并非真正的調用過程的歷史記錄。因此,這個窗口可能先會讓您感到困惑。但是只要開著它來stepping through單步跟蹤代碼至函數體內,好好觀察一下您就會完全明白了。

c++builder4、5中,watch, local variable, 和 call stack窗口可以駐留在code主窗口中,使用起來更加方便。c++builder5中還可以設定調試布局,以便在調試時使用(針對您在設計時使用的設計布局來講的)。

使用所有我所公布的所有技術再加上一點點耐心和一雙火眼金睛,您應該可以解決99%的bug。若您想找到bug,耐心是必要的。花點時間,深呼吸一下,不要讓挫折嚇倒。如果有必要,走出去5分鐘干點別的,您會驚奇的發現自己有了新的視野或者發現開始時漏掉了什么步驟。

如果您有其他的技巧和提示覺得應該加入此文,請盡管來信告訴我們,我們會在以后的版本中加入您的意見。

好了,我希望這篇文章在某種程度上有助于耐心的讀者們。如果正是這樣,我會十分高興自己干了件不錯的工作。也許您所有的bugs都已微不足道了。

原著:bill king

翻譯:史平洋 - cker



版權說明:

國內的網站上,有許多關于c++builder的內容,但多以軟件、組件為主。論壇里也大都不能令人滿意,很空虛的感覺。書籍又都昂貴,內容卻有搶錢之嫌。對銀子不足的初學者、自學者關愛不夠,因而想盡自己的綿薄之力。

文中的所有資料都是從國外網站上收集而來。因為e文不方便,所以翻成中文。因為english和計算機都不是非常好,文中的錯誤在所難免。若大家覺得有用的話,我計劃不斷搜集翻譯一些有用的東西。

有任何意見和建議請mailto:cker@sina.com

您可以隨意復制、分發、下載此文檔。但未經本人同意,您不可以截取、改動本文片斷,或用本文謀取任何形式的利益。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频在线播放| 久久视频在线免费观看| 欧美一区二区三区图| 97婷婷大伊香蕉精品视频| 久久久久久91| 色妞在线综合亚洲欧美| 日韩色av导航| 人人澡人人澡人人看欧美| 久久久久久18| 亚洲国产美女精品久久久久∴| 久久久久国产视频| 日韩中文字幕精品| 欧美性20hd另类| 午夜精品久久久99热福利| 国内精品久久久久久久久| 欧美视频在线免费| 亚洲女人初尝黑人巨大| 亚洲视频在线播放| 韩国三级电影久久久久久| 日韩欧美亚洲国产一区| 亚洲综合日韩在线| 日本精品久久久久久久| 亚洲午夜av电影| 亚洲一品av免费观看| 国产成人精品日本亚洲专区61| 成人夜晚看av| 日韩在线观看免费高清完整版| 亚洲成人av中文字幕| 日韩欧美在线视频免费观看| 久久国产精品99国产精| 欧美超级免费视 在线| 亚洲美女在线看| 国产精品久久久久久久电影| 国产精品视频专区| 国产在线视频91| 久久亚洲私人国产精品va| 国产精品一区二区三区毛片淫片| 亚洲人成电影在线| 懂色av一区二区三区| 性欧美xxxx交| 在线观看久久av| 亚洲一区二区福利| 亚洲第一精品夜夜躁人人躁| 久久91亚洲精品中文字幕奶水| 国产精品成人一区二区三区吃奶| 欧美激情第三页| 亚洲欧美中文另类| 国产亚洲精品美女| 韩日精品中文字幕| 欧美最猛性xxxx| 亚洲综合日韩在线| 欧美激情亚洲国产| 欧美在线不卡区| 性色av一区二区咪爱| 精品色蜜蜜精品视频在线观看| 日韩毛片在线观看| 色阁综合伊人av| 影音先锋欧美精品| 青青草国产精品一区二区| 欧美日韩视频免费播放| 精品国产乱码久久久久酒店| 日韩在线视频中文字幕| 国产日韩av在线播放| 丝袜美腿精品国产二区| 国产精品wwwwww| 亚洲欧美制服第一页| 97在线观看免费| 欧美性理论片在线观看片免费| 久久久久国产精品免费网站| 欧美成人h版在线观看| 国产在线观看一区二区三区| 浅井舞香一区二区| 欧美又大粗又爽又黄大片视频| 精品久久久久久久久久久久久| 国产性猛交xxxx免费看久久| 日本欧美黄网站| 国产精品亚发布| 日韩精品在线免费观看视频| 久久久精品国产一区二区| 揄拍成人国产精品视频| 日本精品免费一区二区三区| 亚洲欧美成人精品| 久久久999精品视频| 国产精品私拍pans大尺度在线| 亚洲黄色片网站| 欧美日韩国产一区二区| 欧美麻豆久久久久久中文| 欧美性受xxxx黑人猛交| 欧美视频中文在线看| 91亚洲精品久久久久久久久久久久| 成人免费黄色网| 日韩在线观看免费av| 91麻豆国产精品| 亚洲综合中文字幕在线| 久久精品夜夜夜夜夜久久| 欧美性videos高清精品| 亚洲三级黄色在线观看| 中文字幕成人精品久久不卡| 国产中文欧美精品| 日韩欧美成人精品| 亚洲国内精品视频| 18性欧美xxxⅹ性满足| 精品毛片网大全| 色777狠狠综合秋免鲁丝| 国产精品毛片a∨一区二区三区|国| 中文字幕一区二区三区电影| 久久精品色欧美aⅴ一区二区| 国产精品十八以下禁看| 自拍亚洲一区欧美另类| 国产精品精品视频| 日韩动漫免费观看电视剧高清| 日韩成人高清在线| 中文欧美在线视频| 91精品久久久久久久久久久久久久| 日韩中文字幕精品视频| 日韩精品丝袜在线| 国产一区二区动漫| 久久香蕉国产线看观看av| 国产一区二区三区在线播放免费观看| 日韩在线视频二区| 久久综合伊人77777| 午夜精品一区二区三区在线视| 国产热re99久久6国产精品| 68精品久久久久久欧美| 亚洲成人a**站| 亚洲free性xxxx护士hd| 亚洲一区二区日本| 中文字幕日韩精品在线| 亚洲欧美成人一区二区在线电影| 日本成人在线视频网址| **欧美日韩vr在线| 久久精品国产欧美激情| 免费成人高清视频| 欧美华人在线视频| 97久久超碰福利国产精品…| 色综合男人天堂| 亚洲v日韩v综合v精品v| 97精品免费视频| 亚洲性69xxxbbb| 欧美国产第二页| 亚洲成av人影院在线观看| 国产精品久久久久影院日本| 欧美肥老太性生活视频| 亚洲午夜精品久久久久久久久久久久| 国产精品com| 亚州国产精品久久久| 亚洲综合精品一区二区| 亚洲一区二区三区成人在线视频精品| 日韩在线中文字| 欧美激情2020午夜免费观看| 久久久久久久色| 免费91在线视频| 久久久久亚洲精品| 亚洲国产欧美久久| 成人av电影天堂| 成人h猎奇视频网站| 狠狠色噜噜狠狠狠狠97| 日韩av黄色在线观看| 日韩av网站导航| 精品久久久久久久久中文字幕| 国产精品视频自在线| 久久精品久久久久电影| 欧美性猛交xxxxx免费看| 欧美黑人巨大xxx极品|