日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序调试

發布時間:2025/6/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

沒有人會在寫程序的時候不出錯誤。如果只是語法錯誤,那么VFP在編譯程序時就會指出,但VFP的編譯器對邏輯錯誤就無能為力了。邏輯錯誤不同于語法錯誤,程序可能是一系列語法正確的指令,但結果卻是錯誤的。在長而復雜的程序中,邏輯錯誤可能會非常隱蔽和模糊。某些典型的情況包括:程序對一個沒有預見到的變量的值錯誤地進行了處理,或計算的順序錯了,選擇了錯誤的工作區或主索引,在使用了一系列的不同的表之后沒有恢復先前的環境等等。

????? 當程序運行時產生了錯誤或得到了不正確的結果,往往需要跟蹤程序的運行才能找出錯誤所在,為此VFP提供了豐富的調試工具,幫助我們逐步發現代碼中的錯誤,有效地解決問題。選擇“工具/調試器”菜單項中,就打開了“調試器”窗口。也可以使用下面的任意命令打開調試器:

DEBUG

SET STEP ON

SET ECHO ON

下面就介紹調試工具的使用方法。

一.跟蹤窗口


??? 在調試中,可以使用的一個最有用的方法就是跟蹤代碼,以此觀察每一行代碼的運行,同時檢查所有的變量、屬性和環境設置的值。

??? 用“窗口/跟蹤”菜單項或工具欄中的跟蹤按鈕可以打開“跟蹤”窗口。選擇“調試/運行”菜單項,在打開的“運行”對話框中,選擇要跟蹤的程序或表單,在“跟蹤”窗口打開它。如圖1。在追蹤代碼時,工具欄提供了四種運行程序的方法:

l???????? <v:shape id="_x0000_s1052" <v:shape 每次執行程序的一個代碼行,執行后程序暫停。如果被跟蹤的程序調用了一個函數或過程,則跟蹤進入調用過程或函數的內部。

l???????? 每次執行程序的一個代碼行,執行后程序暫停,但不跟蹤被調用的過程或函數。

l???????? <v:shape id="_x0000_s1054" <v:shape 執行完當前過程或函數中的其余代碼,然后回到調用程序。

l???????? 運行當前程序到包含光標的行

當決定停止追蹤代碼,但又想把它執行完時,可以單擊“繼續執行”按鈕,告訴VFP繼續執行程序直到它遇到一個斷點或程序的末尾。在檢查了一個疑點區后可以單擊這個按鈕正常地結束程序。也可以通過單擊“取消”按鈕來終止程序。

斷點允許將執行程序停止,設置斷點可縮小逐步調試代碼的范圍。若要為某個特定的代碼行設置斷點,可以雙擊該行旁邊的陰影頁邊,或者把光標放在行中并按下空格鍵或回車鍵。該代碼行左邊的灰色區域中會顯示一個實心點 ,這表明該行已經設置了一個斷點。除此之外,利用VFP的“斷點”對話框(單擊工具欄上的“斷點對話框”按鈕即可打開),還可以設置各種類型的斷點。

缺省的斷點類型是“在定位處中斷”,這意味著程序在遇到這一行時暫停執行?!岸ㄎ弧蔽谋究蛑付藬帱c的過程或函數名以及從這個過程或函數開始的行號。“文件”文本框指定了包含斷點的文件。下表是設置斷點指定位置和文件的示例:

位置

文件

在何處將執行程序停止

ErrHandler

C:\VFP\SAMPLES
\SERVERS\FOXISAPI
\Main.prg

在程序 MAIN.PRG 中,名字為 ErrHandler 的過程里的第一個可執行的行。

Main,10

C:\VFP\SAMPLES
\SERVERS\FOXISAPI
\Main.prg

在名字為 Main 程序的第十行。

Click

C:\Myapp\Form.scx

在文件 FORM.SCX 中,任何一個名字為 Click 的過程、函數、方法程序或事件的第一個可執行的代碼行。

cmdNext.Click

C:\Myapp\Form.scx

文件 FORM.SCX 中,在 cmdNext 控件的 Click 事件中,第一個可執行的行。

cmdNext::Click

?

在任意文件中,父類為 cmdNext 的任何控件的 Click 事件中,第一個可執行的行。

??? 這種斷點類型還可以指定追蹤開始時的運行次數。假設在循環中有一處錯誤,在前100次循環時計算是有效的,但在100 次之后就會產生錯誤。我們當然不想遇到錯誤前一步一步地循環100次,這時只要在“運行次數”文本框中填入100,則調試器在循環過100 遍之后才開始追蹤模式。

??? 第二種斷點類型“如果表達式為真則在斷點處中斷” 指定只有當滿足某一特定條件的時候,才在某特定行上將執行程序停止?!氨磉_式”文本框將指定這一特定條件。

??? 在調試中經常會遇到這種情況:不想在某個特定的行上將程序停止,只有當滿足某特定條件時才將程序停止。這時可以選擇第三種斷點類型“表達式為真時中斷”。下表是斷點表達式的示例:

表達式

用于

EOF( )

當表中的記錄指針移過最后一條記錄時,將程序停止。

'CLICK'$PROGRAM( )

在與 Click 或者 DblClick 事件相關的第一行代碼上,將程序停止。

nReturnValue = 6

如果一個信息框的返回值存儲在 nReturnValue 中,當用戶在該信息框上選擇“確定”的時候,將程序停止。

??? 如果要了解何時一個變量或者屬性的值發生了變化,或者想知道何時運行條件改變了,那么可以選擇第四種斷點類型“當表達式值改變時停止”,對一個表達式設置斷點。示例見下表:

表達式?

用于

RECNO( )

當表中的記錄指針移動時,將程序停止。

PROGRAM( )

在任意一個新的程序、過程、方法程序或事件的第一行上,將程序停止。

myform.Text1.Value

當該屬性的值由于用戶交互或程序運行而發生了改變時,將程序停止。

?

二.局部窗口和監視窗口

??? 使用調試器的一個好處是:在程序暫停運行時能夠很容易看到變量、數組元素、屬性和表達式的運行值,從而確定代碼是否正確。在“跟蹤”窗口中,將光標定位到任何一個變量、數組或屬性上,就可以在提示條中顯示它的當前值。除此之外,調試器還為我們提供了兩個窗口來完成這一功能。

??? “局部”窗口會顯示調用堆棧上任意程序、過程或方法程序里面所有的變量、數組、對象和對象元素。默認情況下,在“局部”窗口中所顯示的是當前執行程序中的值。通過在“局部變量的位置”列表中選擇程序或過程,也可以查看其他程序或過程的值。

??? 有時我們并不想查看所有的變量,而只是想看看一兩個變量來確定它們為什么沒有獲得期望的值。在這種情況下,使用監視窗口更合情理。在“監視”窗口的“監視”框中,鍵入任意一個有效的 VFP 表達式,然后回車。這時,該表達式的值和類型就會出現在“監視”窗口的列表中。也可以在“跟蹤”窗口或其他的“調試程序”窗口中,選擇變量或者表達式,然后將它們拖至“監視”窗口中。在“監視”窗口中,那些已經改變的值會顯示為紅色。在“監視”窗口中,雙擊一個監視項,還可以對其進行編輯。

??? 局部窗口能查看任何例程及在那里定義了什么變量,而監視窗口只能查看當前過程或函數中的變量。在“局部”窗口和“監視”窗口中,單擊數組或對象名稱旁邊的加號(+),可以查看數組或對象的下一級內容。當進入下一級時,就能夠看到數組中所有的數組元素值,以及對象的所有屬性設置。

在“局部”窗口和“監視”窗口中,通過選擇所需的變量、數組元素或屬性,然后單擊“值”列,同時鍵入一個新值,即可改變這些變量、數組元素或屬性的值。

?

三.事件跟蹤

??? 有時候知道不同對象的事件被觸發的順序是很有幫助的。面向對象編程的真正秘密在于知道在每個事件的方法中放置什么代碼,使它們以正確的順序執行。有時當程序不能正常工作時,確定方法中代碼是否正確的最簡單方法是打開事件跟蹤。在調試器中選定“工具/事件跟蹤”菜單項,即可打開“事件跟蹤”對話框。

? ??在這里可以選擇需要跟蹤的事件。缺省時,所有的事件都是預選定的。由于 MouseMove 和 Paint 事件發生次數頻繁,很難看到其他的事件序列,所以建議把這兩個事件從“跟蹤事件”列表中移去。

??? 選中“開啟事件跟蹤”復選框即可激活事件跟蹤,此后每當“跟蹤事件”列表中的一個系統事件發生時,該事件名字就會顯示在“調試輸出”窗口中(單擊工具欄中的“輸出窗口”按鈕即可打開),或者寫到一個文件里。

?

四.使用錯誤處理程序

即使進行了大量的測試和調試,也不能保證程序不出錯。比如在處理一個數據表時,發生了停電,就會毀壞這個表。那么以后當程序中用到這個表時,就會出現錯誤。當過程中的代碼發生錯誤時,VFP 將檢查與 ON ERROR 例程相關的錯誤處理代碼。如果 ON ERROR 例程不存在,VFP 就顯示默認的錯誤信息。在 ON ERROR 后面,可以包含任意有效的 VFP 命令或者表達式,但一般情況是調用一個錯誤處理過程或程序。

??? 在“命令”窗口中鍵入一個不認識的命令,如:AAA

這時會出現一個標準的 VFP 錯誤信息對話框,顯示“不能識別的命令謂詞”。但是如果執行下面的代碼,活動的輸出窗口中就會顯示錯誤號 16,而不在對話框中顯示標準的錯誤信息。

ON ERROR ?ERROR()?? &&ERROR()返回一個代表了錯誤的數字

AAA

執行不帶任何參數的 ON ERROR,會重新將錯誤信息設置為 VFP 內部指定的內容。

下面的代碼描述了一個簡單的 ON ERROR 錯誤處理程序:

lcOldOnError = ON("ERROR")? &&保存原始的錯誤處理程序

ON ERROR DO errhandler WITH ERROR() &&執行帶有過程名的 ON ERROR

*錯誤處理例程所應用的代碼部分

ON ERROR &lcOldOnError? &&重新設置原始的錯誤處理程序

?

PROCEDURE errhandler

LPARAMETER lnErrorNo

DO CASE

??? CASE lnErrorNo = 1 &&文件不存在

??????? *顯示合適的信息

??????? *采取一些手段修正錯誤

??? OTHERWISE

??????? *顯示一個通用的信息

ENDPROC

?

本講介紹了VFP的調試工具,以及使用錯誤處理程序的方法。對于初級的編程人員來說,要熟悉調試應用程序只有通過不斷地學習和上機操作來積累經驗,即使對于編程高手,花在調試應用程序方面的時間仍然是可觀的。不過,所有的努力將因為減少了維護應用程序的工作量而得到回報。

總結

以上是生活随笔為你收集整理的程序调试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 2018av| www.国产91 | 91日韩| 亚洲精品久久久久久久久 | 国产成人免费av | 日韩成人高清 | 国产在线激情视频 | 一本色道久久hezyo加勒比 | 国产黄色免费在线观看 | 91精品国产入口 | 亚洲无限av | 蜜臀久久精品久久久久 | 啪啪免费视频网站 | 国产精选视频在线观看 | 日韩一区二区三区四区五区六区 | 男人av在线| 欧美精品乱码久久久久久 | 重口变态虐黄网站 | 性生交大片免费看l | 亚洲婷婷av| 四虎影院在线看 | 西欧free性满足hd老熟妇 | 国产在线拍揄自揄拍无码 | 国产在线伊人 | 九九午夜视频 | 国产又大又黄的视频 | 欧美亚洲另类图片 | 中文字幕第35页 | 久久99影院 | 欧美黑人巨大xxx极品 | 久久永久免费 | 日本女人hd| 黄色在线观看视频网站 | 青青久久国产 | 日韩精品人妻一区 | 久久久青青 | 黄色激情在线观看 | 天天干天天操天天舔 | 丰满少妇在线观看bd | 男人的天堂在线观看av | 超鹏在线视频 | 日韩欧美高清片 | 日本理论片午伦夜理片在线观看 | 91视频精品 | 日韩欧美国产高清 | 国产精品传媒麻豆hd | 人妻丰满熟妇av无码区免 | 日韩在线观看一区二区 | 国产精品无码免费播放 | 亚洲av色香蕉一区二区三区 | 午夜av一区二区三区 | 国产探花视频在线观看 | 成人精品一区日本无码网 | 九九视频在线播放 | 性开放淫合集 | 男ji大巴进入女人的视频 | 在线一二三区 | 一区二区三区中文视频 | 亚洲一级片免费 | 成人免费xxxxx在线观看 | 日本一本久 | 中文字幕永久在线观看 | 橹图极品美女无圣光 | 夜夜摸夜夜操 | 在线观看视频 | 日日夜夜一区二区 | 国产精品第2页 | 国产一区欧美日韩 | 国内自拍2020 | 91黄色免费看 | 日本女优网址 | 羞羞动漫免费观看 | 国产真实自拍 | 成人网在线 | 美女少妇av| 国产乱码精品一区二区三区忘忧草 | 成人做受视频试看60秒 | 他揉捏她两乳不停呻吟动态图 | 999国产在线 | 国产黄色免费在线观看 | 视频一区日韩 | 激情五月综合网 | 久久成人高清 | 欧美国产精品一区二区三区 | 神马电影久久 | 久久大尺度 | 亚洲综合中文字幕在线 | 久久人妻少妇嫩草av蜜桃 | 九九热久久免费视频 | 免费在线中文字幕 | 亚洲精品乱码久久久久久自慰 | 91午夜影院 | 国产传媒视频在线 | а√天堂8资源中文在线 | 男生吃小头头的视频 | 茄子香蕉视频 | 影音先锋国产资源 | av网址在线免费观看 | 欧美xxxxx视频 |