日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

[原译]11个高效的VS调试技巧

發(fā)布時(shí)間:2025/3/21 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原译]11个高效的VS调试技巧 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹

調(diào)試是軟件開發(fā)周期中的一個(gè)很重要的部分,有時(shí)很有挑戰(zhàn)性,有時(shí)候則讓程序員迷惑,有時(shí)候讓程序員發(fā)瘋,但是。可以肯定的是,對于任何不是太那個(gè)微不足道的程序來說,調(diào)試是不可避免的。近年來,調(diào)試工具的發(fā)展已經(jīng)使得很多調(diào)試任務(wù)簡單省時(shí)了。

?

本文總結(jié)了十個(gè)調(diào)試技巧,當(dāng)你使用VS的時(shí)候可以節(jié)省你很多時(shí)間。

1.懸停鼠標(biāo)查看表達(dá)式

調(diào)試有時(shí)候很有挑戰(zhàn)性,當(dāng)你步入一個(gè)函數(shù)想看看哪塊出錯(cuò)的時(shí)候,查看調(diào)用棧來想想值是從哪來的。另一些情況下,則需要添加一些監(jiān)視表達(dá)式,或者查看局部變量列表,這通常還是花費(fèi)一些時(shí)間的,但是。如果你把你鼠標(biāo)指向你感興趣的一個(gè)變量。你會發(fā)現(xiàn)事情簡單多了。而且,類和結(jié)構(gòu)體可以通過單擊展開。這樣。你就可以方便快捷的找到你想查看的變量了。

?

2實(shí)時(shí)改變值

調(diào)試器不僅僅是一個(gè)分析程序崩潰或是異常結(jié)果的工具了,許多bug都可以通過步入新寫的函數(shù),檢查函數(shù)是否如期望的那樣運(yùn)行來預(yù)防。有時(shí)候你可能會好奇“如果條件為真函數(shù)會正確運(yùn)行嗎”大多數(shù)情況下,根本不需要改變代碼重啟挑起,僅僅把鼠標(biāo)懸停到一個(gè)變量上,雙擊值然后輸入一個(gè)新值就可以了。。

?

3.設(shè)置下一條語句

一個(gè)典型的調(diào)試情況就是通過單步跟蹤分析為什么一個(gè)函數(shù)調(diào)用失敗了。當(dāng)你發(fā)現(xiàn)一個(gè)函數(shù)調(diào)用的另一個(gè)函數(shù)返回錯(cuò)誤的時(shí)候你會怎么做?重啟調(diào)試?有更好的方法。拖動(dòng)這個(gè)黃色的語句標(biāo)識到你想下一步執(zhí)行的語句前就可以了。比如你剛才失敗的那塊,然后步入。簡單,不是嗎?

?

4.編輯然后繼續(xù)

調(diào)試一個(gè)復(fù)雜的程序,或是一個(gè)插件的時(shí)候,在一個(gè)被調(diào)用很多次的函數(shù)處發(fā)現(xiàn)一個(gè)錯(cuò)誤。但是不想浪費(fèi)時(shí)間停下來,重新編譯然后重新調(diào)試。沒問題,僅僅在該處改正代碼然后繼續(xù)單步就可以。VS會修正程序然后繼續(xù)調(diào)試不需要重啟

?

注意,編輯然后繼續(xù)有大量的已知限制,首先,64位代碼是不行的。如果他如果為你的C#程序工作。就去工程設(shè)置的生成選項(xiàng),然后目標(biāo)平臺為x86.不要擔(dān)心。發(fā)布版的目標(biāo)平臺和調(diào)試的時(shí)候是分開的。可以被設(shè)置為任何平臺。。

?

第二.編輯然后繼續(xù)改變在一個(gè)方法里應(yīng)該是局部的。。如果你改變了方法簽名,添加一些新方法或是類。你就不得不重啟程序了。或者撤銷改變來繼續(xù)。改變方法也包含lambda表達(dá)式隱式修改的自動(dòng)生成的代理類,因此也不能繼續(xù)。

?

5.方便的監(jiān)視窗口

大概現(xiàn)代的調(diào)試器都有一個(gè)監(jiān)視窗口,無論如何。VS允許你簡單的添加或移除變量。單擊空行,輸入你的表達(dá)式按下回車,或者是在不需要的表達(dá)式上按下Delete鍵就可以刪除了。

而且。從監(jiān)視窗口你不僅僅可以看到“正常”的變量。你可以輸入$handles 來追蹤你的程序打開了多少句柄(可以方便的修復(fù)內(nèi)存泄漏),輸入$err 可以看到上一個(gè)函數(shù)的錯(cuò)誤碼,然后使用工具-錯(cuò)誤信息可以看到更詳細(xì)的描述,或者輸入@eax(64位是@rax)來查看包含函數(shù)返回值的寄存器。

?

6.帶注釋的反匯編

使用交互式的反匯編模式可以使得優(yōu)化程序的關(guān)鍵部分變得很容易,VS給出對應(yīng)你代碼每一行的匯編指令,并且運(yùn)行單步運(yùn)行。同時(shí),可以在任何位置設(shè)置斷點(diǎn)。而且,表達(dá)式的查看和修改也像在C++代碼里一樣

?

7.帶有棧的線程窗口?

調(diào)試多線程的程序是痛苦的。。或者也可以是很有趣的。取決于你的調(diào)試器。VS2010真正優(yōu)美的特性是線程窗口的棧視圖,通過窗口的調(diào)用棧你可以方便的總覽線程。

?

8.條件斷點(diǎn)

如果你嘗試通過斷點(diǎn)再現(xiàn)一個(gè)罕見的事件,該情況引發(fā)了一些嚴(yán)重的錯(cuò)誤。你可以添加條件斷點(diǎn)。定義一個(gè)斷點(diǎn)的條件,然后如果條件不成立,VS會忽略該斷點(diǎn)

?

9.內(nèi)存窗口?

有些bug由不正確的結(jié)構(gòu)體定義引起,忽略的對齊屬性等等。查看內(nèi)存中的內(nèi)容可以定位然后修復(fù)bug。VS提供了一個(gè)放百年的內(nèi)存窗口,可以把值以8/16/32/64位的形式展示。還有浮點(diǎn)值。也允許實(shí)時(shí)改變他們。就像在文本編輯器里一樣。

?

?

10.轉(zhuǎn)到定義

這個(gè)特性不是直接關(guān)于調(diào)試的,而是關(guān)于瀏覽大項(xiàng)目的。如果你嘗試找到一些不是你自己寫的代碼中的錯(cuò)誤,快速知道“這個(gè)類型是什么”或者“這個(gè)函數(shù)是干嘛的”,可以節(jié)省很多時(shí)間,VS通過一個(gè)轉(zhuǎn)到定義命令方便了你。

?

11.命令窗口

第十一的技巧chaau已經(jīng)建議過了。確實(shí)可以節(jié)省很多時(shí)間,VS支持命令窗口,可以通過,視圖-其他窗口-命令窗口來啟動(dòng)。一旦激活,你可以輸入不同的命令來自動(dòng)化調(diào)試。舉個(gè)例子。你可以通過如下命令 簡單的模擬MFC COleDateTime? 變量。

? dt.Format("%Y-%m-%d %H:%M:%S")

許可

本文包括源代碼和文件在CPOL下授權(quán)。

?

原文地址:10plus-powerful-debugging-tricks-with-Visual-Studi

著作權(quán)聲明:本文由http://leaver.me?翻譯,歡迎轉(zhuǎn)載分享。請尊重作者勞動(dòng),轉(zhuǎn)載時(shí)保留該聲明和作者博客鏈接,謝謝!

from:?http://www.cnblogs.com/lazycoding/archive/2012/10/03/2710738.html

總結(jié)

以上是生活随笔為你收集整理的[原译]11个高效的VS调试技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。