Visual(Studio中11個(gè)強(qiáng)大的調(diào)試技巧和方法)
大家好,今天小悅來(lái)為大家解答以上問(wèn)題。Visual,Studio中11個(gè)強(qiáng)大的調(diào)試技巧和方法很多人還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
這篇文章總結(jié)了可能節(jié)省你大量時(shí)間的11個(gè)Visual studio的調(diào)試技巧和方法。
1 懸停鼠標(biāo)查看表達(dá)式值
調(diào)試是很有挑戰(zhàn)性的。比如在函數(shù)內(nèi)逐步運(yùn)行可以看出哪里出錯(cuò),查看堆棧信息可以知道函數(shù)被誰(shuí)調(diào)用等等……但是無(wú)論哪種情況下,查看表達(dá)式和局部變量的值都是很麻煩的(把表達(dá)式和局部變量放到watch窗口里)。一種更簡(jiǎn)單的方法,把鼠標(biāo)停在所需查看的數(shù)據(jù)上。如果是類(lèi)或結(jié)構(gòu),那么點(diǎn)擊展開(kāi)可以很方便快速地查看其字段。
2 在運(yùn)行過(guò)程中改變變量值
調(diào)試器不僅僅是分析程序崩潰和詭異行為的工具,還可以通過(guò)逐步調(diào)試檢查數(shù)據(jù)和行為是否符合程序預(yù)期的方法解決許多bug。有時(shí),你會(huì)想是否設(shè)置某些條件為真,程序就能正確運(yùn)行了。其實(shí)你只要把鼠標(biāo)移動(dòng)到變量上,雙擊值,然后輸入你需要的值。這樣就不需要修改代碼,重啟程序了。
3 設(shè)置下一個(gè)運(yùn)行位置
一個(gè)典型的調(diào)試案例是我們經(jīng)常會(huì)用逐步調(diào)試的方法去分析為什么函數(shù)出錯(cuò)了。這時(shí)你遇到這個(gè)函數(shù)調(diào)用其他函數(shù)返回錯(cuò)誤,而這個(gè)錯(cuò)誤不是你想要的,你該怎么辦?重啟調(diào)試器?這里有個(gè)更好的方法,直接把黃色的運(yùn)行位置箭頭拖到你想要的運(yùn)行位置。其實(shí)就是跳過(guò)中間運(yùn)行代碼,直接到想要的位置。很簡(jiǎn)單吧。
4 編輯然后繼續(xù)運(yùn)行
在運(yùn)行一個(gè)很復(fù)雜的程序和插件時(shí),發(fā)現(xiàn)一個(gè)錯(cuò)誤,但是不想浪費(fèi)時(shí)間去重編譯重啟動(dòng)程序。很簡(jiǎn)單,只要在這個(gè)位置修改這個(gè)bug,然后繼續(xù)調(diào)試。Visual studio會(huì)修改這個(gè)程序,使得你可以繼續(xù)調(diào)試而不需要重啟程序。
值得注意的是“編輯然后繼續(xù)運(yùn)行”這個(gè)功能有幾個(gè)限制。一,它不能在64位代碼上使用。如果想使用這個(gè)功能,到項(xiàng)目設(shè)置里的編譯選項(xiàng),選擇”x86”作為目標(biāo)平臺(tái)。不要擔(dān)心,這目標(biāo)平臺(tái)在reslease配置是和”debug是分離的,也就是說(shuō)依然是”Any CPU”的設(shè)置。二,“編輯然后繼續(xù)運(yùn)行”這個(gè)功能僅適用于一個(gè)函數(shù)內(nèi)部改變。如果你想要改變這個(gè)函數(shù)的聲明或者增加新的方法,你只能選擇重啟程序,或者不做任何改變繼續(xù)。如果修改的方法中包含lambda表達(dá)式,則意味著修改了編譯器自動(dòng)生成的委托類(lèi)型,這樣會(huì)導(dǎo)致編譯器停止運(yùn)行。
5 一個(gè)方便的查看窗口
大部分現(xiàn)代的調(diào)試器都有查看窗口。但是,visual studio的查看窗口使用特別簡(jiǎn)單,你能很方便的增加和刪除變量。只要在窗口里點(diǎn)擊空白行,輸入表達(dá)式然后按enter鍵?;蛘唿c(diǎn)擊表達(dá)式,按delete鍵刪除不需要的表達(dá)式。
在調(diào)試窗口不僅僅可以查看普通的變量值,甚至可以輸入$handles去追蹤打開(kāi)的句柄數(shù)量,$err去查看函數(shù)的錯(cuò)誤代碼(然后使用 Tools->Error 查看錯(cuò)誤代碼的描述)或者輸入 @eax(在64位下是@rax )查看包含函數(shù)返回值的寄存器值。
6 注釋反匯編
使用內(nèi)部的反匯編功能使得優(yōu)化局部代碼更加簡(jiǎn)單。Visual studio可以在你的每一行代碼下顯示匯編指令,并且可以逐步調(diào)試匯編代碼,也可以在任意位置設(shè)置斷點(diǎn)。查看和修改匯編代碼類(lèi)似于c++。
7 堆棧信息的線程窗口
調(diào)試多線程代碼是很痛苦的。或許也是有趣的。這取決于你的調(diào)試器。Visual studio 一個(gè)很贊的功能就是在線程窗口查看線程的堆棧信息。你能很方便的直接看到所有線程以及他們的堆棧信息。
8 條件斷點(diǎn)
如果你想重現(xiàn)一個(gè)小概率事件,但是斷點(diǎn)在大量不需要的條件下也會(huì)觸發(fā)。你可以很簡(jiǎn)單的設(shè)置條件斷點(diǎn)。在斷點(diǎn)窗口設(shè)置該斷點(diǎn)條件,Visual studio 會(huì)自動(dòng)忽略不符合條件的斷點(diǎn)。
9 內(nèi)存窗口
一些bug是由錯(cuò)誤的結(jié)構(gòu)定義、缺少對(duì)齊屬性等原因引起的。查看每行內(nèi)存的內(nèi)容很容易定位和解決這些bug. Visual studio 的內(nèi)存窗口可以把數(shù)據(jù)翻譯成8/16/32/64-bit數(shù)字或者浮點(diǎn)數(shù)。你可以在編輯窗口直接改變數(shù)值。
10 跳轉(zhuǎn)到定義
如果你在解決別人寫(xiě)的代碼一個(gè)bug,會(huì)遇到“這個(gè)類(lèi)型是什么”“這個(gè)函數(shù)做什么的”之類(lèi)的問(wèn)題,你可以使用visual studio的跳轉(zhuǎn)到定義的命令來(lái)查看類(lèi)型或函數(shù)的定義。
11 命令窗口
這個(gè)小技巧是由chaau建議的,它能節(jié)省你大量的時(shí)間。Visual studio支持一個(gè)命令窗口,你可以通過(guò)菜單View->Other Windows->Command Window 打開(kāi)。你可以在窗口里輸入不同命令使調(diào)試自動(dòng)化。比如,可以通過(guò)很簡(jiǎn)單的命令去的測(cè)試MFC的COleDateTime變量。
? dt.Format(“%Y-%m-%d %H:%M:%S”)
英文原文:Ivan Shcherbakov,編譯:@halftone_被禁用了
本文到此結(jié)束,希望對(duì)大家有所幫助。
免責(zé)聲明:本文由用戶(hù)上傳,與本網(wǎng)站立場(chǎng)無(wú)關(guān)。財(cái)經(jīng)信息僅供讀者參考,并不構(gòu)成投資建議。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。 如有侵權(quán)請(qǐng)聯(lián)系刪除!
- 慧榮SM2508主控 重新定義存儲(chǔ)效率,解鎖AI與游戲性能天花板
- AI全景觀賽革命,海信116英寸巨幕電視+星海大模型重塑家庭綠茵場(chǎng)?
- 普高轉(zhuǎn)軌錦秋國(guó)際:另一條花開(kāi)的路
- 2025暑期海外研學(xué),與你共赴世界名校之約!
- 愛(ài)瑪集團(tuán)攜手字節(jié)火山引擎、美的美云智數(shù),共啟 AI 深度合作新篇章
- 英國(guó)能效標(biāo)簽注冊(cè)全攻略:合規(guī)流程、印刷要求與歐稅通高效解決方案
- 免費(fèi)專(zhuān)利檢索工具全解析與麥德通的智能化解決方案
- CAD缺少線型文件會(huì)怎么樣
-
安徽淮南長(zhǎng)安獵手K50作為一款備受關(guān)注的皮卡車(chē)型,其2025款在配置和性能上都有所升級(jí)。對(duì)于想要購(gòu)買(mǎi)這款車(chē)的消...瀏覽全文>>
-
安徽阜陽(yáng)的大眾高爾夫GTI作為一款備受年輕消費(fèi)者喜愛(ài)的性能車(chē)型,其價(jià)格和配置一直是大家關(guān)注的重點(diǎn)。高爾夫GT...瀏覽全文>>
-
近年來(lái),新能源汽車(chē)市場(chǎng)發(fā)展迅猛,大眾品牌憑借其深厚的技術(shù)積累和可靠的產(chǎn)品品質(zhì),在國(guó)內(nèi)市場(chǎng)上占據(jù)了重要地...瀏覽全文>>
-
QQ多米作為一款備受關(guān)注的小型車(chē),憑借其時(shí)尚的外觀設(shè)計(jì)和實(shí)用的配置,吸引了眾多消費(fèi)者的關(guān)注。為了幫助大家...瀏覽全文>>
-
隨著新能源汽車(chē)市場(chǎng)的持續(xù)升溫,上汽大眾ID 6 X憑借其寬敞的7座空間和出色的續(xù)航能力,成為不少家庭用戶(hù)的關(guān)...瀏覽全文>>
-
淮南途銳新能源2024款車(chē)型以其卓越的性能和環(huán)保特性吸引了眾多消費(fèi)者的關(guān)注。作為一款高端插電式混合動(dòng)力SUV,...瀏覽全文>>
-
近年來(lái),隨著新能源汽車(chē)的普及和政策支持的不斷加大,越來(lái)越多消費(fèi)者將目光投向了插電混動(dòng)車(chē)型。作為一款備受...瀏覽全文>>
-
2025款生活家PHEV作為一款備受關(guān)注的新能源車(chē)型,憑借其出色的性能和環(huán)保特性,吸引了眾多消費(fèi)者的目光。在購(gòu)...瀏覽全文>>
-
長(zhǎng)安汽車(chē)旗下高端新能源品牌——啟源,在2024款新車(chē)的推出中再次吸引了廣泛關(guān)注。作為該品牌的旗艦車(chē)型之一,...瀏覽全文>>
-
近年來(lái),新能源汽車(chē)市場(chǎng)持續(xù)火熱,各大品牌紛紛推出新款車(chē)型以滿(mǎn)足消費(fèi)者需求。在眾多選擇中,2025款安徽池州I...瀏覽全文>>
- iPhone用戶(hù)現(xiàn)在可以通過(guò)iOS18.1更新更改其Apple帳戶(hù)的主要電子郵件地址
- 當(dāng)你看到T-Mobile用戶(hù)贏得手機(jī)手表和耳機(jī)時(shí)你會(huì)羨慕不已
- Ubuntu24.10OracularOriole推出最新內(nèi)核工具鏈GNOME47和增強(qiáng)的安全性
- 搭載M4的MacBookPro在Cinebench上擊敗了CoreUltra9288V和Ryzen9AI370HX
- EarFun推出功能強(qiáng)大的159美元UBoomX便攜式揚(yáng)聲器
- iPhone16Pro iPhone16ProMax表現(xiàn)優(yōu)于基本機(jī)型扭轉(zhuǎn)了之前的趨勢(shì)
- Waze迎來(lái)魔獸世界改版
- SquareEnix將心愛(ài)的RPG移植到MetaQuest3
- 蘋(píng)果正在設(shè)計(jì)全新操作系統(tǒng)瞄準(zhǔn)新類(lèi)別的產(chǎn)品
- 小米R(shí)edmiA27U顯示器采用4K面板和90WUSBC端口
- QQ多米落地價(jià),各配置車(chē)型售價(jià)一目了然
- 生活家PHEV多少錢(qián)?購(gòu)車(chē)攻略在此
- 現(xiàn)代伊蘭特試駕,暢享豪華駕乘,體驗(yàn)卓越性能
- 試駕領(lǐng)克03,從預(yù)約到試駕的完美旅程
- QQ多米最新價(jià)格2025款,各配置車(chē)型售價(jià)全揭曉,性?xún)r(jià)比之王
- 淮北途觀L多少錢(qián) 2025款落地價(jià),價(jià)格再創(chuàng)新低,性?xún)r(jià)比爆棚
- 山東濟(jì)南帕薩特新能源新款價(jià)格2025款多少錢(qián)?最低售價(jià)17.715萬(wàn)起,性?xún)r(jià)比大揭秘
- SWM斯威G01FF新款價(jià)格2024款多少錢(qián)?看完這篇購(gòu)車(chē)攻略再做決定
- 淮南ID.4 X價(jià)格,最低售價(jià)13.9888萬(wàn)起,價(jià)格再創(chuàng)新低
- 滁州途鎧多少錢(qián) 2023款落地價(jià)與配置的完美平衡
- 蘋(píng)果將為iPhone17系列采用新電池技術(shù)
- Adobe推出PhotoshopElements和PremiereElements2025取消Elements軟件的永久許可
- AppleiPhoneSE4將配備更新的OLED顯示屏
- InfinixZeroFlip首次亮相作為新款可折疊Android智能手機(jī)其價(jià)格低于摩托羅拉Razr2024
- OnePlus13型號(hào) 充電規(guī)格在最新泄漏中被登記
- Insta360AcePro2主要規(guī)格終于泄露GoPro和DJI運(yùn)動(dòng)相機(jī)競(jìng)爭(zhēng)對(duì)手將配備50MP傳感器5nm和2倍數(shù)碼變焦
- XboxElite無(wú)線控制器系列2通過(guò)Xbox設(shè)計(jì)實(shí)驗(yàn)室獲得透明面板
- 索尼INZONEM10S華碩ROGSwiftOLEDPG27AQDP新品上市但售價(jià)更高
- 谷歌終止PixelBuds的點(diǎn)擊通知功能
- 谷歌正在努力完善iOS中缺少的RCS支持重要功能
- 對(duì)AppleIntelligence功能的評(píng)價(jià)從一般到還可以
- GalaxyS25Plus看起來(lái)很時(shí)髦但三星是否選擇像iPhone一樣的通用設(shè)計(jì)
- 優(yōu)質(zhì)48英寸三星S90DOLED電視在亞馬遜上降至歷史最低價(jià)同時(shí)贈(zèng)送100美元Xbox禮品卡和1年保護(hù)計(jì)劃
- AOC推出四款新型游戲顯示器具有快速刷新率和低價(jià)格
- Valve出售部分SteamDeck型號(hào)-GBLCD型號(hào)售價(jià)296.65美元512GBLCD型號(hào)售價(jià)336.75美元
- Beats在其產(chǎn)品線中增加了手機(jī)保護(hù)殼推出適用于iPhone16系列的MagSafe保護(hù)殼
- 三星在IFA2024上展示AI產(chǎn)品
- 新的AIPlaygroundDesign工具你可以簡(jiǎn)單地與之交談就像ChatGPT一樣
- 極簡(jiǎn)主義Linux發(fā)行版Peropesis2.7附帶存檔和ISO管理工具
- GAMEBABY控制器和外殼混合套裝現(xiàn)已接受預(yù)訂