日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何使用VisualC++子集搜索主題

在Windows平臺(tái)上的實(shí)現(xiàn)就有若干種,比較常用的有Visual C++ 6.0附帶的Visual C++子集實(shí)現(xiàn),和Borland C++ Builder附帶的C++編譯器實(shí)現(xiàn),看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

安陸ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

如果程序并不是每次運(yùn)行到斷點(diǎn)處都會(huì)發(fā)生錯(cuò)誤,那么不停地在調(diào)試器和應(yīng)用程序之間穿梭很快就會(huì)讓人厭倦,這時(shí)高級(jí)斷點(diǎn)就派上了用場(chǎng)。從本質(zhì)上來(lái)講,高級(jí)斷點(diǎn)允許你將某些智慧寫入到斷點(diǎn)中,讓調(diào)試器在執(zhí)行到斷點(diǎn)處時(shí),只當(dāng)程序內(nèi)部狀態(tài)符合你指定的條件時(shí)才在斷點(diǎn)處中斷程序運(yùn)行,并切換到調(diào)試器中。按下Alt+F9快捷鍵彈出Breakpoints對(duì)話框,瀏覽一下對(duì)話框發(fā)現(xiàn)該對(duì)話框分為L(zhǎng)ocation、Data和Messages三頁(yè),分別對(duì)應(yīng)三種斷點(diǎn):

1. 位置斷點(diǎn):我們通常使用的簡(jiǎn)單斷點(diǎn)均為位置斷點(diǎn),我們還可以設(shè)置斷點(diǎn)在某個(gè)二進(jìn)制地址或任何函數(shù)上,并通過(guò)指定各種限定條件來(lái)增強(qiáng)位置斷點(diǎn)的功能。

2. 表達(dá)式和變量斷點(diǎn):調(diào)試器會(huì)讓程序一直運(yùn)行,直到滿足所設(shè)的條件或者指定數(shù)據(jù)更改為止。在Intel CPU上,這兩種斷點(diǎn)都盡可能通過(guò)CPU的特定調(diào)試寄存器使用一個(gè)硬件斷點(diǎn),如果能夠使用調(diào)試寄存器,那么程序?qū)⒛軌蛉龠\(yùn)行,否則調(diào)試器將單步執(zhí)行每個(gè)匯編指令,并每步都檢查條件,程序的運(yùn)行速度將極其緩慢甚至無(wú)法運(yùn)行。

3. Visual C++子集斷點(diǎn):使用消息斷點(diǎn),可以讓調(diào)試器在窗口過(guò)程接收到一個(gè)特定的Windows消息時(shí)中斷。消息斷點(diǎn)適用于C SDK類型的程序,對(duì)于使用MFC等C++類庫(kù)的程序(應(yīng)該是絕大多數(shù))來(lái)說(shuō),消息斷點(diǎn)并不實(shí)用,可以變通地使用位置斷點(diǎn)來(lái)達(dá)到同樣效果。

調(diào)用堆棧

有時(shí)候我們并不清楚應(yīng)該在哪里設(shè)置斷點(diǎn),只知道程序正在運(yùn)行就突然崩潰了,這時(shí)候如何定位到出錯(cuò)地點(diǎn)呢?這時(shí)的選擇就是查看調(diào)用堆棧,調(diào)用堆棧可以幫助我們確定某一特定時(shí)刻,程序中各個(gè)函數(shù)之間的相互調(diào)用關(guān)系。#t#

方法是當(dāng)程序執(zhí)行到某斷點(diǎn)處或者程序崩潰,控制權(quán)轉(zhuǎn)到調(diào)試器后,按下Alt+7快捷鍵,彈出Call Stack窗口,你可以看到當(dāng)前函數(shù)調(diào)用情況,當(dāng)前函數(shù)在最上面,下面的函數(shù)依次調(diào)用其上面的函數(shù)。在Call Stack窗口的彈出菜單上選擇Parameter Values和Parameter Types可以顯示各個(gè)函數(shù)的參數(shù)類型和傳入值。

使用跟蹤工具

有些時(shí)候,我們希望了解程序中不同函數(shù)之間的協(xié)作關(guān)系,或者由于文檔的缺失,希望能夠確認(rèn)函數(shù)在不同情況下被調(diào)用時(shí)的傳入?yún)?shù)值。這時(shí)使用斷點(diǎn)功能就過(guò)分麻煩,而調(diào)用堆棧只能查看當(dāng)前函數(shù)的被調(diào)用情況,一種較好的方法就是使用TRACE宏以及相對(duì)應(yīng)的工具。

程序(Debug版)運(yùn)行中,一旦運(yùn)行到Visual C++子集,就會(huì)向當(dāng)前Windows系統(tǒng)的調(diào)試器輸出TRACE宏內(nèi)指定的字符串并顯示出來(lái),當(dāng)在Visual C++環(huán)境中調(diào)試運(yùn)行(按F5鍵)程序時(shí),可以在Output窗口的Debug頁(yè)看到TRACE宏的輸出內(nèi)容。

實(shí)際上,TRACE宏是封裝了Windows API函數(shù)OutputDebugString的功能,有些輔助工具可以在不驚動(dòng)Visual C++調(diào)試器的前提下,攔截程序中TRACE宏的輸出內(nèi)容,比如《深入淺出MFC》的附錄中提到的Microsoft System Journal(MSJ)1996年1月的C/C++專欄介紹的TraceWin工具(在較老版本的MSDN中可以找到源代碼和文檔)以及功能強(qiáng)大的免費(fèi)工具DebugView。

使用TRACE宏,我們可以輕松了解程序中各個(gè)函數(shù)之間的相互協(xié)作關(guān)系和被調(diào)用的先后順序和時(shí)間,進(jìn)一步說(shuō),你能夠完全掌握程序的執(zhí)行流程。***請(qǐng)注意,TRACE宏會(huì)對(duì)程序效率有所影響,所以,當(dāng)前不用的TRACE宏***刪除或者注釋掉。

 閱讀程序的技巧

對(duì)于程序員來(lái)說(shuō),無(wú)論是學(xué)習(xí)還是工作,經(jīng)常要閱讀其他程序員的源代碼,如何快速領(lǐng)悟程序的思想,洞悉程序的結(jié)構(gòu)和各個(gè)組成部分的功能,進(jìn)而全面掌握程序所涉及的方方面面,是程序員很重要的一項(xiàng)基本技能。下面介紹一些常用的技巧。

從功能、界面入手Visual C++子集

一個(gè)完整的應(yīng)用程序或者系統(tǒng)是由若干相對(duì)獨(dú)立的功能構(gòu)成,這些功能反應(yīng)在與用戶交互的圖形界面上,就是各種菜單命令、工具欄按鈕命令等等。所以如果當(dāng)前只對(duì)程序的某幾個(gè)功能感興趣,可以在程序中找到這些菜單命令、按鈕命令等的ID響應(yīng)函數(shù),以此為起點(diǎn),逐步深入到程序內(nèi)部,直到完全理解該功能的實(shí)現(xiàn)為止。此過(guò)程所花費(fèi)的時(shí)間,很大程度上取決于程序員對(duì)調(diào)試技術(shù)的掌握程度。

需要強(qiáng)調(diào)的是,在不熟悉程序核心結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)的情況下,直接采用該方法探究程序,當(dāng)逐步深入到程序核心時(shí),涉及的程序模塊數(shù)量會(huì)急劇增長(zhǎng),理解難度也會(huì)驟然增大;一旦你對(duì)程序核心結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)了然于胸,采用該方法探究程序,會(huì)有勢(shì)如破竹之感覺(jué)。

砍去枝葉,只留主干

前面已經(jīng)提到,無(wú)論如何,最終你都要掌握程序核心結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)。如何掌握呢?方法是首先將拿到的程序進(jìn)行完整的備份,然后將次要功能都從程序中去掉,只留下的必須的部分。去除次要功能是一個(gè)反復(fù)多次的過(guò)程,花費(fèi)的時(shí)間取決于程序員對(duì)行業(yè)知識(shí)的理解程度、編程技術(shù)的高低和經(jīng)驗(yàn)的多少。

經(jīng)常遇到無(wú)法在短時(shí)間內(nèi)判斷某個(gè)模塊是否次要的情況(隨著對(duì)程序的理解逐漸加深,以及經(jīng)驗(yàn)和技術(shù)的積累,這種情況會(huì)越來(lái)越少),這時(shí)候建議直接將該模塊去除,然后重新編譯連接程序,運(yùn)行程序,看程序運(yùn)行是否正常。

以上介紹的兩種方法是使用比較頻繁的,Visual C++子集可以相互結(jié)合,交替使用。但無(wú)論采用什么方法探究閱讀程序,都不要指望能夠不費(fèi)任何氣力,花費(fèi)一兩個(gè)鐘頭就能夠?qū)⑸先f(wàn)行的程序探究個(gè)明白。


分享題目:如何使用VisualC++子集搜索主題
URL標(biāo)題:http://www.dlmjj.cn/article/cccpcdd.html