亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VS.NET中對應(yīng)用程序進(jìn)行調(diào)試的方法和步驟

        2010-10-09 07:52:22郭樹文
        關(guān)鍵詞:斷點(diǎn)程序員對話框

        郭樹文

        (赤峰市環(huán)境科學(xué)研究院,內(nèi)蒙古 赤峰 024000)

        VS.NET中對應(yīng)用程序進(jìn)行調(diào)試的方法和步驟

        郭樹文

        (赤峰市環(huán)境科學(xué)研究院,內(nèi)蒙古 赤峰 024000)

        本文介紹了在Visual Studio.NET的IDE環(huán)境中對應(yīng)用程序進(jìn)行調(diào)試的方法和步驟,并介紹了VS.NET中的調(diào)試工具.

        應(yīng)用程序;錯誤;調(diào)試

        開發(fā)出應(yīng)用程序后,必須先確保其沒有錯誤并且安全可靠,然后才能將其交付給用戶.也就是說,在確定應(yīng)用程序可以發(fā)布之前,必須先徹底檢查該應(yīng)用程序是否存在錯誤,并且應(yīng)糾正遇到的任何錯誤.其實(shí),任何實(shí)際的應(yīng)用軟件都不能保證完全沒有錯誤,但是程序員要保證盡力發(fā)現(xiàn)軟件存在的錯誤并修正這些錯誤.搜尋和消除錯誤的過程稱為調(diào)試.調(diào)試過程是一個程序員最重要的工作之一.

        本文將詳細(xì)討論如何對C#中的應(yīng)用程序進(jìn)行調(diào)試、排除錯誤.

        1 調(diào)試的必要性

        以某大型購物中心的場景為例,該中心使用計(jì)算機(jī)處理其計(jì)費(fèi)系統(tǒng).此系統(tǒng)接受顧客所購所有商品的名稱和價格,計(jì)算總額,減去折扣(如果有),然后輸出最終的帳單金額.假設(shè)在事務(wù)處理過程中,收銀員的計(jì)算機(jī)屏幕顯示一則錯誤消息,然后應(yīng)用程序終止.這時候必須重新執(zhí)行未完成的當(dāng)前事務(wù)處理,還必須重新輸入全部信息.但是,如果程序員已經(jīng)預(yù)先編寫代碼對這種情況進(jìn)行處理,這種錯誤就不會發(fā)生,系統(tǒng)也不會崩潰.

        必須先完全消除所有已經(jīng)發(fā)現(xiàn)的語法錯誤和語義錯誤,然后才能成功部署應(yīng)用程序.而在將軟件視為完全可靠之前,應(yīng)該先對其進(jìn)行測試.軟件測試過程是軟件開發(fā)過程中的一個重要組成部分.但是,盡管測試有助于確定輸出結(jié)果是否正確,但它無法確定錯誤發(fā)生的確切位置.這就是需要使用調(diào)試的原因.

        測試是對開發(fā)人員認(rèn)為正確的許多方面進(jìn)行確認(rèn),直至開發(fā)人員發(fā)現(xiàn)其中一項(xiàng)不正確的這樣一個過程.而調(diào)試就是找出并改正這些不正確項(xiàng)的過程.

        例如,程序員認(rèn)為變量X的值在某一時間將為12,或認(rèn)為在函數(shù)調(diào)用AREA(number,5)中接收到參數(shù)number和5的值是正確的.程序員對此如何確認(rèn)?答案是使用調(diào)試工具.調(diào)試工具雖然無法確定錯誤,但是對于確定錯誤發(fā)生的位置極為有用.建議在所有的編程工作中使用一個調(diào)試工具. Visual Studio.NET的IDE帶有調(diào)試工具.

        2 錯誤類型

        語法錯誤是編碼過程中遇到的最明顯的一類錯誤.程序員在編寫代碼的過程中不遵循語言規(guī)則時,就會產(chǎn)生語法錯誤.例如,C#要求程序員在每行代碼的末尾加上分號.如果漏掉分號,就被視為語法錯誤.

        當(dāng)應(yīng)用程序試圖執(zhí)行無法實(shí)施的操作時,就會產(chǎn)生運(yùn)行時錯誤.此類錯誤發(fā)生在運(yùn)行時.在程序運(yùn)行過程中要拿一個變量作除數(shù),然而這個時候這個變量的值是0,這種情況就會產(chǎn)生運(yùn)行時錯誤.

        語義錯誤指編譯器不會直接指出的邏輯錯誤,語法可能是對的,但代碼或許不會顯示所需的輸出結(jié)果.此類錯誤僅在其實(shí)際發(fā)生時出現(xiàn)在運(yùn)行時,這是最難發(fā)現(xiàn)的程序錯誤.檢測此類錯誤的唯一方式是測試應(yīng)用程序,以確保其提供的輸出結(jié)果為預(yù)期結(jié)果.表1列出了各種錯誤之間的區(qū)別.

        3 調(diào)試過程

        很多程序員通常都試圖通過調(diào)用輸出函數(shù)(如Console.Write()等)來顯示某種消息,以判斷該點(diǎn)以前的代碼是否正確執(zhí)行,從而達(dá)到隔離問題的目的.這些函數(shù)還可以用來跟蹤和顯示程序內(nèi)某個變量的值.這是一種有效的調(diào)試技術(shù).但麻煩的是,一旦找到并解決了問題,必須從代碼中刪除所有這些輸出函數(shù)的調(diào)用.這是一個相當(dāng)繁瑣的過程.

        表1 語法錯誤和語義錯誤

        為簡化此過程,大多數(shù)編程語言和工具都提供有調(diào)試器,以便程序員觀察程序的運(yùn)行時行為并跟蹤變量的值,從而確定錯誤的位置.使用調(diào)試器的優(yōu)點(diǎn)是,檢查變量的值時不必插入任何輸出語句來顯示這些值.Visual Studio.NET也提供有調(diào)試器,以便程序員調(diào)試使用.NET支持的任意一種語言編寫的代碼.它為程序員提供了計(jì)算變量的值和編輯變量、暫掛或暫停程序執(zhí)行、查看寄存器的內(nèi)容以及查看應(yīng)用程序所耗內(nèi)存空間的工具等.

        使用調(diào)試器時,必須在代碼中插入“斷點(diǎn)”,以便在特定行處停止執(zhí)行.斷點(diǎn)告知調(diào)試器,程序應(yīng)在設(shè)置的斷點(diǎn)處暫停執(zhí)行(暫時停止).程序進(jìn)入中斷模式后,就處于暫掛狀態(tài).VS.NET中的許多調(diào)試器功能都只能在中斷模式下調(diào)用.通過這些功能,程序員可以檢查變量的值,如果需要還可以更改變量的值,也可以檢查其他數(shù)據(jù).

        在VS.NET中設(shè)置斷點(diǎn)的步驟如下:

        (1)右擊所需代碼行,以設(shè)置斷點(diǎn).此時會顯示彈出式窗口

        (2)選擇“插入斷點(diǎn)”.設(shè)置斷點(diǎn)所在的代碼行由代碼旁的彩色點(diǎn)指示,且整行均為高亮顯示.

        下圖所示為在不同的代碼行設(shè)置有斷點(diǎn)的程序示例的代碼窗口.遇到斷點(diǎn)時,程序會在設(shè)置斷點(diǎn)所在的代碼行停止.

        在上圖中,控制權(quán)位于第一個斷點(diǎn),代碼旁的黃色箭頭和黃色高亮顯示便可表明這一點(diǎn).要繼續(xù)執(zhí)行程序,請從菜單中選擇“調(diào)試”?“繼續(xù)”(也可以按快捷鍵F5).如果設(shè)置有更多斷點(diǎn),程序執(zhí)行將在每個斷點(diǎn)處再次停止,選擇“調(diào)試”?“繼續(xù)”后將會繼續(xù).

        Visual Studio.NET環(huán)境提供了創(chuàng)建、編譯和生成應(yīng)用程序解決方案的工具.共有兩種模式可用來生成應(yīng)用程序,一種是調(diào)試模式(Debug模式)另一種是發(fā)布模式(Release模式).調(diào)試模式可用來重復(fù)編譯應(yīng)用程序和排除錯誤,直至能夠成功運(yùn)行.當(dāng)應(yīng)用程序無需重復(fù)編譯即可發(fā)布時,再改成發(fā)布模式編譯,然后發(fā)布.

        4 VS.NET中的調(diào)試工具

        VS.NET調(diào)試器提供有多個窗口,用以監(jiān)控程序執(zhí)行.其中可在調(diào)試過程中使用的部分窗口包括“局部變量”窗口、“監(jiān)視”窗口、“快速監(jiān)視”對話框、“即時”窗口.下面我們將逐個說明這些窗口:

        4.1 “局部變量”窗口

        “局部變量”窗口顯示局部變量中的值.它只列出當(dāng)前作用域(即正在執(zhí)行的方法)內(nèi)的變量并跟蹤它們的值.控制權(quán)一旦轉(zhuǎn)到類中的其他方法,系統(tǒng)就會從“局部變量”窗口中清除列出的變量(如果超出作用域),并顯示當(dāng)前方法的變量.

        調(diào)試應(yīng)用程序時從菜單中選擇“調(diào)試”→“窗口”→“局部變量”,即可顯示“局部變量”窗口.

        “局部變量”窗口包含三列信息:“名稱”列顯示變量的名稱,“值”列顯示變量的值,“類型”列顯示變量的類型.當(dāng)程序執(zhí)行從一個方法轉(zhuǎn)向另一個方法時,“局部變量”窗口中顯示的變量也會改變,從而只顯示局部變量.可以為“值”列下的字符串和數(shù)值變量鍵入新值,當(dāng)值被更改后,新值將顯示為紅色.程序?qū)⑹褂眠@個變量的新值.

        4.2 “監(jiān)視”窗口

        “監(jiān)視”窗口用于計(jì)算變量和表達(dá)式的值,并通過程序跟蹤它們的值,也可以用來編輯變量的值.與“局部變量”窗口不同,此窗口中要“監(jiān)視”的變量應(yīng)由開發(fā)人員提供或指示.因此,可以指定不同方法中的變量.要同時檢查多個表達(dá)式或變量,可以同時打開多個“監(jiān)視”窗口.VS.NETIDE中的“監(jiān)視”窗口如圖9.4所示.變量的名稱應(yīng)在窗口中指定.執(zhí)行程序時,“監(jiān)視”窗口會自動跟蹤變量的值.如果被監(jiān)視的變量作用域不在當(dāng)前執(zhí)行的方法內(nèi),將會顯示“標(biāo)識符超出范圍”的錯誤.

        從菜單中選擇“調(diào)試”→“窗口”→“監(jiān)視”窗口(1)“監(jiān)視”窗口,(2)“監(jiān)視”窗口,(3)或“監(jiān)視”窗口,(4)即可顯示“監(jiān)視”窗口.

        4.3 “快速監(jiān)視”對話框

        “快速監(jiān)視”對話框可用于快速計(jì)算變量或表達(dá)式的值.通過此對話框還可以修改變量的值.下圖所示為“快速監(jiān)視”對話框.

        此對話框每次只能用來顯示一個變量的值.此外,此對話框?qū)嶋H為模式對話框.也就是說,它不能用來在執(zhí)行過程中跟蹤變量的值.要繼續(xù)執(zhí)行代碼,必須關(guān)閉此對話框.要跟蹤變量的值,可以單擊“添加監(jiān)視”按鈕,將變量添加到“監(jiān)視”窗口中.

        用右鍵單擊變量并選擇“快速監(jiān)視”,即可顯示“快速監(jiān)視”對話框.

        4.4 “即時”窗口

        “命令”窗口的即時模式可用于檢查變量的值、給變量賦值以及運(yùn)行一行代碼.下圖所示為VS. NET中“命令”窗口的即時模式.要查找變量的值,必須在變量的名稱前添加問號(?).當(dāng)應(yīng)用程序處于中斷模式時,值將顯示在“命令”窗口的即時模式中.同樣,在此窗口中鍵入賦值代碼,然后按下Enter鍵,即可更改變量的值.分中斷模式無法使用“即時”窗口.

        從菜單中選擇“調(diào)試”→“窗口”→“即時”,即可顯示即時模式下的“命令”窗口.

        5 Visual Studio.NET調(diào)試器的部分功能

        (1)跨語言調(diào)試使用 VB.NET、VC++.NET、VC#.NET、Managed Extensions for C++、腳本和SQL編寫的應(yīng)用程序.

        (2)調(diào)試為Microsoft.NET框架公共語言運(yùn)行庫編寫的應(yīng)用程序以及Win 32本機(jī)應(yīng)用程序.

        (3)加入正在主機(jī)或遠(yuǎn)程機(jī)器上運(yùn)行的程序.

        (4)通過在單個Visual Studio解決方案中啟動多個程序,或加入已經(jīng)在運(yùn)行的其他程序來調(diào)試多個程序.

        調(diào)試在編碼過程中以最小粒度執(zhí)行.現(xiàn)在已經(jīng)有很多的方法和調(diào)試環(huán)境幫助軟件開發(fā)人員在編碼過程中調(diào)試程序.集成開發(fā)環(huán)境(IDE)提供了一種在不需要編譯的情況下捕獲語言專有預(yù)定義錯誤(如語句結(jié)尾缺少字符和未定義變量等)的方式.

        通過對應(yīng)用程序的調(diào)試,可以找出程序中存在的絕大部分語法錯誤和運(yùn)行時錯誤,減少程序在運(yùn)行過程中出現(xiàn)錯誤,造成系統(tǒng)中斷.但是,即使找到并消除了應(yīng)用程序中的語法錯誤和運(yùn)行時錯誤,程序仍然不一定完全正確.要確保應(yīng)用程序工作完全正常,還必須使用各種數(shù)據(jù)對其進(jìn)行測試.測試可以確保向客戶交付穩(wěn)定可靠的產(chǎn)品,是檢查應(yīng)用程序并確保其符合設(shè)計(jì)規(guī)范的過程.測試的另一個重要原因是軟件中包含許多尚未發(fā)現(xiàn)的錯誤,為找出應(yīng)用程序中這些錯誤,應(yīng)當(dāng)對其進(jìn)行測試.

        〔1〕Jeff Ferguson,Brian Patterson et al.C# Bible [M].北京:電子工業(yè)出版社出版,2002(12):258-269.

        TP206

        A

        1673-260X(2010)03-0026-03

        猜你喜歡
        斷點(diǎn)程序員對話框
        為了讓媽媽看懂地圖,一位“野生程序員”做了個小程序
        怎樣成為一名優(yōu)秀程序員
        幼兒100(2020年29期)2020-10-21 06:17:58
        正?;謴?fù)虛擬機(jī)
        一類無限可能問題的解法
        Bootlace Worms’Secret etc.
        程序員之子
        意林(2017年24期)2018-01-02 22:49:14
        主導(dǎo)電回路發(fā)生斷點(diǎn)故障判斷方法探討
        加班
        三月三(2016年6期)2016-06-21 10:25:33
        快速抓取對話框中的完整信息
        電腦迷(2012年22期)2012-04-29 20:30:54
        TKScope仿真調(diào)試Cortex-M3內(nèi)核的高級手段
        国产自拍成人在线免费视频| 公与淑婷厨房猛烈进出| 亚洲国产精品综合久久网络| 天天综合网天天综合色| 天堂一区人妻无码| 国产人在线成免费视频| 免费国产交换配乱淫| 在线观看亚洲AV日韩A∨| 国产乱人伦AⅤ在线麻豆A| 精品国产亚洲人成在线观看| 男人天堂插插综合搜索| 国产色婷婷久久又粗又爽| 日本顶级metart裸体全部| 野花在线无码视频在线播放| 男性一插就想射是因为啥| 国产精品美女一区二区av| 与漂亮的女邻居少妇好爽| 狠狠躁天天躁中文字幕| 国产女女精品视频久热视频| 成人日韩av不卡在线观看| 国产91九色视频在线播放| 激情精品一区二区三区| 成人网站在线进入爽爽爽| 欧美性xxxx狂欢老少配| 久久狠狠高潮亚洲精品暴力打| 一本久久伊人热热精品中文| 亚洲精品98中文字幕| 尤物yw午夜国产精品视频| 99久久精品午夜一区二区| 国产精品久久久| 无码的精品免费不卡在线| 色综合色综合久久综合频道| 国产精品亚洲av无人区二区| 亚洲国产av一区二区三区天堂| 精人妻无码一区二区三区| 无套内谢的新婚少妇国语播放| 无码a级毛片免费视频内谢| 精品久久人妻一区二区| 日本av亚洲中文字幕| 国产精品视频露脸| 亚洲成av人在线观看无堂无码|