vs(visual studio)调试功能里各个按钮的意义及使用方法?
文章目錄
- [【干貨】Visual Studio 程序調(diào)試小貼士——【思路、快捷鍵、技巧】](https://www.bilibili.com/video/BV1iZ4y1j7a5?from=search&seid=11976484625361745732)
- 非debug模式運(yùn)行程序:ctrl+F5
- 設(shè)置斷點(diǎn):F9
- 下一步(逐過程):F10
- 進(jìn)入函數(shù)(逐語句):F11(除非當(dāng)前函數(shù)是庫函數(shù),否則都會進(jìn)去運(yùn)行相應(yīng)代碼)
- 跳出函數(shù):shift+F11
- 重新調(diào)試(重新啟動):Ctrl+shift+F5
- [Visual Studio調(diào)試技巧](https://www.bilibili.com/video/BV1Vf4y1W7F7/?spm_id_from=autoNext)
- 停止調(diào)試:從調(diào)試狀態(tài)恢復(fù)到代碼編輯狀態(tài)(shift+F5)
- 繼續(xù):跳到下一個斷點(diǎn)(F5)
- - 調(diào)用堆棧:反映程序運(yùn)行到當(dāng)前位置已經(jīng)調(diào)用過哪些函數(shù)(老師原文)
- - 調(diào)試窗口(進(jìn)入調(diào)試時才會出現(xiàn)的):
- - 監(jiān)視窗口:
- 添加監(jiān)視變量:可以在名稱處直接輸入變量名,也可在代碼變量處右鍵 --> 添加監(jiān)視
- - 斷點(diǎn)窗口
- - 內(nèi)存窗口
- 調(diào)試鍵拖拽(調(diào)試過程中返回過去的執(zhí)行)
- 附加到進(jìn)程調(diào)試方法 attach to process(在特定情況下調(diào)試方便,具體啥情況沒太聽明白,比如web服務(wù)器?)(不知有啥區(qū)別?)
- 遠(yuǎn)程附加進(jìn)程調(diào)試法
- 自動變量窗口和局部變量窗口
停止調(diào)試:
全部拆離:
全部終止:
可以在這個地方打開官網(wǎng)幫助:
https://docs.microsoft.com/zh-cn/visualstudio/windows/?f1url=%3FappId%3DDev16IDEF1%26l%3Dzh-CN%26k%3Dk(MSDNSTART)%26rd%3Dtrue&view=vs-2019
初步了解 Visual Studio 調(diào)試器
零基礎(chǔ)調(diào)試的方法
看半天沒什么效果,還不如找個視頻教程呢???
【干貨】Visual Studio 程序調(diào)試小貼士——【思路、快捷鍵、技巧】
非debug模式運(yùn)行程序:ctrl+F5
設(shè)置斷點(diǎn):F9
下一步(逐過程):F10
進(jìn)入函數(shù)(逐語句):F11(除非當(dāng)前函數(shù)是庫函數(shù),否則都會進(jìn)去運(yùn)行相應(yīng)代碼)
跳出函數(shù):shift+F11
重新調(diào)試(重新啟動):Ctrl+shift+F5
下面這個不錯啊:(有時間再看)
Visual Studio調(diào)試技巧
停止調(diào)試:從調(diào)試狀態(tài)恢復(fù)到代碼編輯狀態(tài)(shift+F5)
繼續(xù):跳到下一個斷點(diǎn)(F5)
- 調(diào)用堆棧:反映程序運(yùn)行到當(dāng)前位置已經(jīng)調(diào)用過哪些函數(shù)(老師原文)
比如運(yùn)行發(fā)布release的程序崩潰時,會生成一個核心轉(zhuǎn)儲文件,通過這個文件進(jìn)行調(diào)試就能看到程序崩潰在哪一行代碼上。
在嵌套多層代碼時,比如函數(shù)調(diào)用函數(shù),有不同的局部變量,這在棧中表現(xiàn)出不同的區(qū)域快,通過調(diào)用堆棧窗口能夠查看這些不同作用域的區(qū)域塊的局部變量:
- 調(diào)試窗口(進(jìn)入調(diào)試時才會出現(xiàn)的):
- 監(jiān)視窗口:
添加監(jiān)視變量:可以在名稱處直接輸入變量名,也可在代碼變量處右鍵 --> 添加監(jiān)視
注意:監(jiān)視窗口只能添加當(dāng)前作用域下的變量,不是當(dāng)前作用域下無法添加
如果程序運(yùn)行到另一個作用域,不是當(dāng)前作用域的監(jiān)視變量將會顯示灰色
- 斷點(diǎn)窗口
可以查看斷點(diǎn)
取消打勾將會禁用斷點(diǎn):
命中次數(shù)指的是該斷點(diǎn)所在代碼執(zhí)行了多少次
- 內(nèi)存窗口
要輸入變量的內(nèi)存地址才能查看變量內(nèi)存,可是如何獲取變量內(nèi)存地址呢?
在監(jiān)視窗口,輸入&+ 要監(jiān)視的變量名,就能看到變量的內(nèi)存地址了
在這里點(diǎn)擊右鍵,選擇“復(fù)制值”,粘貼到內(nèi)存監(jiān)控窗口內(nèi)存地址處,刪除后面多余的內(nèi)容,敲回車即可查看變量所在地址的內(nèi)存信息(當(dāng)然你也可以手動輸入):
這個內(nèi)存數(shù)據(jù)是用十六進(jìn)制表示的,而且閱讀順序也要倒過來:
一個整型int類型的數(shù)字占32位內(nèi)存空間,一個十六進(jìn)制數(shù)占4位,4乘以8就是32位
注意:在這里,地址的單位是兩個十六進(jìn)制數(shù),也就是一個字節(jié)
(隔行地址相差32個字節(jié),可能我選擇x64運(yùn)行結(jié)果又會不同)
調(diào)試鍵拖拽(調(diào)試過程中返回過去的執(zhí)行)
在調(diào)試過程中,有時不小心按快了,跳過了某一想要查看的步驟,這個時候怎么返回呢?
無需重新啟動調(diào)試,只需將調(diào)試箭頭向上拖拽即可
即可回到前面的步驟
附加到進(jìn)程調(diào)試方法 attach to process(在特定情況下調(diào)試方便,具體啥情況沒太聽明白,比如web服務(wù)器?)(不知有啥區(qū)別?)
這個有一個參考:VS調(diào)試-附加到進(jìn)程
要求:
程序必須不是稍縱即逝的,要能持續(xù)運(yùn)行(至少具有一定運(yùn)行時間),才能附加到進(jìn)程
如果非要調(diào)試稍縱即逝的程序,可以在程序中添加代碼,如getchar();,獲取用戶輸入,能阻斷程序的運(yùn)行
必須是在visual studio下生成的exe文件
在項(xiàng)目處右鍵,點(diǎn)擊重新生成:
復(fù)制路徑到win+r窗口,按enter即可打開生成的exe文件所在路徑:
雙擊可以啟動程序:
然后我們打開任務(wù)管理器,點(diǎn)擊下面的簡略信息,可以看到運(yùn)行的進(jìn)程:
在visual studio中運(yùn)行程序啟動的窗口跟我們點(diǎn)exe文件打開的不是一樣的,一個是visual studio的子進(jìn)程,一個是獨(dú)立的進(jìn)程:
然后我們在visual studio中,關(guān)閉其他運(yùn)行的程序或者調(diào)試,點(diǎn)擊調(diào)試 -->附加到進(jìn)程(對了,記得在代碼上打上要調(diào)試的斷點(diǎn)):
找到我們啟動的同名exe進(jìn)程,選擇它,點(diǎn)擊附加:
然后就可以想正常那樣調(diào)試了,但是還是看不出這種調(diào)試方法跟原先的方法有什么區(qū)別??
遠(yuǎn)程附加進(jìn)程調(diào)試法
如果遠(yuǎn)程調(diào)試器64位,代碼編譯就選64位,遠(yuǎn)程調(diào)試器是32位,代碼編譯就選32位,選debug還是release無影響
遠(yuǎn)程調(diào)試器位置:
注意:一定要找到當(dāng)前visual studio版本對應(yīng)的調(diào)試器,
。
。
。
先看到這里吧,其他具體可看視頻
17-遠(yuǎn)程附加到進(jìn)程調(diào)試【上】
其他還有:
#pragma once和#ifndef
visual studio字符編碼說明
visual studio內(nèi)部SDL安全檢查
內(nèi)存泄漏處理
處理鍵盤緩沖區(qū)導(dǎo)致的錯誤
讓自己的程序運(yùn)行在別人的電腦上
讓程序運(yùn)行在windows xp上
debugiew遠(yuǎn)程調(diào)試
自動變量窗口和局部變量窗口
“自動變量”窗口顯示當(dāng)前斷點(diǎn)周圍使用的變量。 “局部變量”窗口顯示在局部范圍內(nèi)定義的變量,通常是當(dāng)前函數(shù)或方法。
參考自:Visual Studio 調(diào)試系列5 檢查變量(使用自動窗口和局部變量窗口)
總結(jié)
以上是生活随笔為你收集整理的vs(visual studio)调试功能里各个按钮的意义及使用方法?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c/c++如何正确使用结构体?
- 下一篇: Linux进程地址空间与进程内存布局详解