国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

這篇具有很好參考價值的文章主要介紹了你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.什么是bug?

談到bug,我們知道bug的中文意思是蟲子,飛蛾的意思。至于為什么bug一詞會用到計算機領(lǐng)域的話得追溯到第一臺計算機的誕生。
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
上面?zhèn)€你看到的就是世界上第一個bug的誕生。它的來源也是非常的有意思,當(dāng)時世界上的第一臺計算機出了故障不能正常的工作,于是工作人員就進入計算機內(nèi)部檢查(當(dāng)時的計算機非常的大,達到人可以進去),這個時候發(fā)現(xiàn)計算機的一個晶體管內(nèi)有個飛蛾死在了里面于是把飛蛾清理干凈,換了零件之后,計算機就可以正常的工作了。于是科學(xué)家們就把此次事件記錄了下來,一直延伸到現(xiàn)在,我們就把計算機成程序出問題說成是bug。

2.調(diào)試是什么?有多重要?

調(diào)試(英語:Debugging / Debug),又稱除錯,是發(fā)現(xiàn)和減少計算機程序或電子儀器設(shè)備中程序
錯誤的一個過程。

簡單點說調(diào)試就是一個發(fā)現(xiàn)錯誤,并且精準的找到錯誤地點,找到合理的解決方案的一個糾錯過程。

在程序員界里有這樣一句話:一個優(yōu)秀的程序員同時也是一個優(yōu)秀的偵探。

  • 調(diào)試的基本步驟:
    1.發(fā)現(xiàn)程序錯誤的存在
    2.以隔離、消除等方式對錯誤進行定位
    3.確定錯誤產(chǎn)生的原因
    4.提出糾正錯誤的解決辦法
    5.對程序錯誤予以改正,重新測試

3.debug和release的介紹。

  • Debug 通常稱為調(diào)試版本,它包含調(diào)試信息,并且不作任何優(yōu)化,便于程序員調(diào)試程序。
  • Release 稱為發(fā)布版本,它往往是進行了各種優(yōu)化,使得程序在代碼大小和運行速度上都是最優(yōu) 的,以便用戶很好地使用。

當(dāng)然兩個版本還是有一些的不同之處的,就比如生成的可執(zhí)行文件的大小是不一樣的(.exe文件后綴名的文件);
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
我們先看Debug版本的:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
再看Release版本的:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

  • 這樣一對比就可以看出了Release版本的可執(zhí)行文件的大小是比Debug版本的小的,這是因為Release版本是對代碼做了一些優(yōu)化的,而我們的Debug版本是沒有做優(yōu)化的,所以在Release版本下的文件所占內(nèi)存大小是更小的。

  • 那問題來了,既然有兩個版本我們應(yīng)該選擇哪個版本呢?
    首先我們知道這兩個版本的區(qū)別就是一個做了優(yōu)化一個沒有做優(yōu)化。
    那既然我們要檢查我們編寫的代碼哪里出問題了,是不是應(yīng)該我們寫的什么代碼就調(diào)試什么代碼,也就是說沒有做任何的優(yōu)化效果,這樣的話及時是一點小錯誤我們也可以即使的發(fā)現(xiàn)并作出及時的改進。所以我們調(diào)試首選的就是Debug版本的。

  • 相反的,如果我們調(diào)試用的是Release版本的話,我們知道Release版本是對我們寫的代碼進行了優(yōu)化作用的,如果我們用這個版本進行調(diào)試的話,有些錯誤的代碼時被優(yōu)化過的,那就說明一些較小的錯誤是不能被發(fā)現(xiàn)的,那么日積月累把這些小錯誤累計起來就會出大錯誤的。這么講的話那Release版本到底在什么時候用到呢。我們要知道一點的時我們編寫出來的文件終歸是要給客戶使用的,既然時給別人用的我們就要保證我們編寫的程序不能出現(xiàn)錯誤,這個時候Release版本就有用出來,當(dāng)我們調(diào)試的時候一些小的錯誤沒有及時的發(fā)現(xiàn)就直接給用戶使用,這個時候我么Release版本就會幫我們優(yōu)化代碼彌補那些小錯誤,這個時候客戶就能正常的時候了。

4.windows環(huán)境調(diào)試介紹。

4.1常見調(diào)試快捷鍵

使用一些常用調(diào)試快捷鍵: 快捷鍵作用
F5 啟動調(diào)試,經(jīng)常用來直接跳到下一個斷點處。
F9 創(chuàng)建斷點和取消斷點斷點的重要作用,可以在程序的任意位置設(shè)置斷點。這樣就可以使得程序在想要的位置隨意停止執(zhí)行,繼而一步步執(zhí)行下去。
F10 逐過程,通常用來處理一個過程,一個過程可以是一次函數(shù)調(diào)用,或者是一條語句。
F11 逐語句,就是每次都執(zhí)行一條語句,但是這個快捷鍵可以使我們的執(zhí)行邏輯進入函數(shù)內(nèi)部(這是最長用的)。
CTRL+F5 開始執(zhí)行不調(diào)試,如果你想讓程序直接運行起來而不調(diào)試就可以直接使用。
  1. CTRL+F5 直接執(zhí)行
    我們代碼后,想要直接看到我們編寫的結(jié)果,就用這個組合鍵,就能在終端看到我們的編寫結(jié)果了。這個是可以跳過斷點的。
  2. F10逐步調(diào)試
    萬一我們代碼編寫的時候出現(xiàn)了錯誤,我們也很難看出哪里出錯了,這個時候就需要對我們的代碼逐行的進行檢驗,這個時候我們就可以按F10
  3. F5 時執(zhí)行鍵
    這個一般和F9斷點搭配的使用,當(dāng)我們設(shè)置好了斷點之后,只需要按F5便會跳到斷點處。
  4. F9 設(shè)計斷點
    但我們編寫的代碼又幾百行甚至更多的時候,而我們又知道他在那個部分出錯了,如果我們還按F10逐行的進行檢驗的話就會浪費大量的時間和精力,這個時候我們可以設(shè)計斷點。設(shè)計斷點的方法有兩種:1.選中一行按F9 。2.用鼠標左鍵點擊改行最左邊。當(dāng)我們設(shè)置好了斷點之后再按F5就可以直接跳到我們的斷點處了。
    你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

4.2 調(diào)試的時候查看程序當(dāng)前信息

一般我們使用到的有:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
注意這些都是在進行調(diào)試的時候才能使用的

4.2.1監(jiān)視:

你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
這個監(jiān)視窗口我們可以自主輸入想要看到結(jié)果,在按F10的過程最左邊有一個箭頭,這個箭頭就是我們執(zhí)行到哪一行的標志。
同時除了手動的,還用自動的。
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
自動窗口會根據(jù)你調(diào)試到哪里自動生成可監(jiān)視的變量,但是他的局限性就是不能一直監(jiān)視,一點過來變量的作用域就不能在監(jiān)視了。

4.2.2內(nèi)存

監(jiān)視內(nèi)存的方法和上面是一樣的:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

它可以顯示處變量子內(nèi)存的分布。

4.2.3調(diào)用堆棧

你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

4.2.4反匯編

調(diào)用堆棧的方法有兩種:1.鼠標右鍵點擊轉(zhuǎn)到反匯編。2.窗口打開
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

4.2.5寄存器

你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧

5.一些調(diào)試的實例。

實例一:

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[10] = {0};
    for(i=0; i<=12; i++)
   {
        arr[i] = 0;
        printf("hehe\n");
   }
    return 0;
}

按我們的分析,這是一個數(shù)組訪問越界問題。
我們先看Debug版本的:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
這里發(fā)現(xiàn)程序進入死循環(huán)了(這里提示以下要改成x86狀態(tài)下才能看到死循環(huán)的效果,如果時x64的話就會直接報錯)這是為什么呢?
這個時候我我們就要明白有關(guān)內(nèi)存問題了:
我們的內(nèi)存分為棧區(qū),堆區(qū),靜態(tài)區(qū)(后面都會詳細的講解),而我們主函數(shù)調(diào)用時在棧區(qū)的。
棧區(qū)的特點是:1.先使用高地址的空間,在使用低地址的處的空間。2.先進的后出,后進的先出。
我們看一下他們的匯編:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
這里我們可以看到i的內(nèi)存和arr[12]的內(nèi)存地址重合了,也就說明當(dāng)我們遍歷到arr[12]并把arr[12]初始化為0的時候使用過地址改變arr[12]的,恰好我們i的地址也是arr[12]的地址,所以i就別改成了0,所以一旦i遍歷到12的時候就有被改成了0,所以i又再次遍歷,一直這樣重復(fù)所以就會死循環(huán)。

那我們再看一下Release版本的:
你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧
會發(fā)現(xiàn)它就整整齊齊的打印了13個hehe,這就是Release版本的優(yōu)化作用。

6.如何寫出好(易于調(diào)試)的代碼。

優(yōu)秀的代碼:

  1. 代碼運行正常
  2. bug很少
  3. 效率高
  4. 可讀性高
  5. 可維護性高
  6. 注釋清晰
  7. 文檔齊全

常見的coding技巧:

  1. 使用assert
  2. 盡量使用const30. 養(yǎng)成良好的編碼風(fēng)格
  3. 添加必要的注釋
  4. 避免編碼的陷阱。

注意:文章來源地址http://www.zghlxwxcb.cn/news/detail-452056.html

  1. 分析參數(shù)的設(shè)計(命名,類型),返回值類型的設(shè)計
  2. 這里講解野指針,空指針的危害。
  3. assert的使用,這里介紹assert的作用
  4. 參數(shù)部分 const 的使用,這里講解const修飾指針的作用
  5. 注釋的添加

7.編程常見的錯誤。

  1. 編譯型錯誤
    直接看錯誤提示信息(雙擊),解決問題?;蛘邞{借經(jīng)驗就可以搞定。相對來說簡單。
  2. 鏈接型錯誤
    看錯誤提示信息,主要在代碼中找到錯誤信息中的標識符,然后定位問題所在。一般是標識符名不
    存在或者拼寫錯誤。
  3. 運行時錯誤
    借助調(diào)試,逐步定位問題。最難搞。

到了這里,關(guān)于你真的知道怎么使用vs嗎?把把手教你實用調(diào)試小技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • VS實用調(diào)試技巧

    VS實用調(diào)試技巧

    Bug一詞的原意是蟲子,而在電腦系統(tǒng)或程序中隱藏著的一些未被發(fā)現(xiàn)的 缺陷或問題 ,人們也叫它\\\"bug\\\"。這是為什么呢?這就要追溯到一個程序員與飛蛾的故事了。 Bug的創(chuàng)始人格蕾絲·赫柏(Grace Murray Hopper),是一位為美國海軍工作的電腦專家,也是最早將人類語言融入到電

    2024年02月01日
    瀏覽(30)
  • [Selenium]你真的知道怎么提高Selenium的運行速度嗎?

    [Selenium]你真的知道怎么提高Selenium的運行速度嗎?

    對于網(wǎng)上流傳的提高selenium的方法有很多,但從程序運行的感官上來看,感覺提速并不明顯。所以,我特地做了一些測試,尋找最優(yōu)方案。 但是,由于對不同組的測試次數(shù)并不相同,結(jié)果可能不太嚴謹。但是,一般來說,結(jié)果基本都在一定范圍內(nèi)浮動,所以結(jié)果和多次測試大

    2024年02月06日
    瀏覽(19)
  • Selenium | 你真的知道怎么提高Selenium的運行速度嗎?

    Selenium | 你真的知道怎么提高Selenium的運行速度嗎?

    對于網(wǎng)上流傳的提高selenium的方法有很多,但從程序運行的感官上來看,感覺提速并不明顯。所以,我特地做了一些測試,尋找最優(yōu)方案。 但是,由于對不同組的測試次數(shù)并不相同,結(jié)果可能不太嚴謹。但是,一般來說,結(jié)果基本都在一定范圍內(nèi)浮動,所以結(jié)果和多次測試大

    2024年02月03日
    瀏覽(17)
  • 手把手教你創(chuàng)建VS離線安裝包

    沒有現(xiàn)成的iso 以前的VS一個ISO搞定安裝 但現(xiàn)在VS都是在線安裝模式了,有些工作機 處于無法聯(lián)網(wǎng)狀態(tài),又需要安裝VS時需要離線包 其實現(xiàn)在VS提供了離線安裝包的命令行創(chuàng)建方式,下面以VS2019社區(qū)版為例,VS2022也是一樣操作 下載VS Community 安裝exe點擊這里,假設(shè)放在D盤 打開

    2024年02月05日
    瀏覽(20)
  • 手把手的教你安裝PyCharm --Pycharm安裝詳細教程(一)(非常詳細,非常實用)

    手把手的教你安裝PyCharm --Pycharm安裝詳細教程(一)(非常詳細,非常實用)

    Jetbrains家族和Pycharm版本劃分: pycharm是Jetbrains家族中的一個明星產(chǎn)品,Jetbrains開發(fā)了許多好用的編輯器,包括Java編輯器(IntelliJ IDEA)、JavaScript編輯器(WebStorm)、PHP編輯器(PHPStorm)、Ruby編輯器(RubyMine)、C和C++編輯器(CLion)、.Net編輯器(Rider)、iOS/macOS編輯器(AppCode)

    2024年02月05日
    瀏覽(27)
  • 5G時代音視頻開發(fā)前景怎么樣?音視頻開發(fā)需要掌握哪些技術(shù)?(1),手把手教你5G時代Webview的正確使用姿勢

    5G時代音視頻開發(fā)前景怎么樣?音視頻開發(fā)需要掌握哪些技術(shù)?(1),手把手教你5G時代Webview的正確使用姿勢

    你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學(xué)習(xí)如何使用Markdown編輯器, 可以仔細閱讀這篇文章,了解一下Markdown的基本語法知識。 我們對Markdown編輯器進行了一些功能拓展與語法支持,除了標準的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你

    2024年04月11日
    瀏覽(29)
  • 手把手教你怎么寫順序表

    手把手教你怎么寫順序表

    目錄 一、順序表有什么功能? 二、實現(xiàn)順序表的各個功能 1.前置準備 2.初始化順序表 3.順序表擴容 4.打印順序表 5.增加順序表成員 5.1尾增 5.2頭增 ?6.刪除順序表中成員的內(nèi)容 6.1尾刪 6.2頭刪 ?7.查找成員 ?8.修改(替換) 9.插入(在目標位置插入成員) 10.定向刪除(將目標位置的成

    2024年02月15日
    瀏覽(24)
  • AI繪畫怎么弄?手把手教你制作

    AI繪畫怎么弄?手把手教你制作

    最近關(guān)于AI繪畫的話題是非?;鸨模』锇閭兞私釧I繪畫嗎?這是一種由我們輸入關(guān)于畫面的描述,然后由AI根據(jù)這些描述自動生成畫面的技術(shù)?,F(xiàn)在有很多軟件都可以實現(xiàn)AI繪畫的操作,那你們知道AI繪畫特效軟件哪個好嗎?想要制作AI繪畫的小伙伴,下面就為你們帶

    2024年02月11日
    瀏覽(96)
  • 蘋果手機怎么傳輸照片到電腦?教你4種實用方法

    蘋果手機怎么傳輸照片到電腦?教你4種實用方法

    蘋果手機怎么傳輸照片到電腦 ?除了更換新手機需要遷移數(shù)據(jù),iPhone用久了常常會遇到儲存空間不足的問題,因此把一些數(shù)據(jù)上傳到電腦上也是必要的。今天咱們就來說說從iPhone傳輸照片到電腦的遷移方法吧。 蘋果手機怎么傳輸照片到電腦 ?使用蘋果數(shù)據(jù)線連接手機設(shè)備與

    2024年02月05日
    瀏覽(95)
  • 路由器怎么知道是不是壞掉了?教你怎么看路由器壞沒壞

    最近有好友“勇敢的心”問小編這樣一個問題:怎么看路由器是不是壞了?好友反饋,最近在使用路由器無線上網(wǎng),總是斷線,電話咨詢網(wǎng)絡(luò)服務(wù)商,客服稱線路并沒有問題。那么我們怎么看是路由器壞了還是網(wǎng)絡(luò)本身的問題呢?下面yii666小編教大家一招。 怎么看路由器是不

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包