① 關於使用vs2013編寫匯編語言時的單步調試問題
有時候匯編的寫法生成的調試符號跟源文件對應會有一些出入,導致調試有些斷點失效,這種情況下我個人調試的時候,使用F10或者F11啟動程序,這樣就可以精確停止在每一行代碼上了。另外可以結合反匯編代碼進行調試
② vs2019如何在一個函數中每個語句單步執行
編譯程序時採用Debug方式,用F9啟動程序,用F7進入單步調試方式。
③ C++編程里的單步調試咋弄
Restart(Ctrl+shift+F5):此debugger功能將從程序的開始(第一有效行)處全速執行,而不是從當前所跟蹤的位置開始調 試,這時所有變數的當前值都將被丟棄,debugger會自動停在程序的main()開始處.這時如果選擇Step Over(F10)就可以逐步執行main()函數了.Stop Debugging(Shift+F5):此debugger功能將終止(所有)調試,並返回到常規編輯狀態. Break(此功能常常在遇到調用函數的語句時可見.):此功能將在調試過程中的debugger當前位置掛起程序的執行,然後就可以在調 試狀態一修改程序的代碼,接著可以用Apply Code Changes(Alt+F10)來應用修改的代碼到正在調試的程序當中.如果,當前(需要,待)可以(從DOS等窗口)輸入值,掛起後將不能再輸入.Apply Code Changes(Alt+F10):此功能可以在程序正在調試程序過程中應用(掛起)修改後的源代碼.如,選擇Break功能並修改代 碼後,只要選擇Apply Code Changes(Alt+F10)就能將修改後的代碼應用到正在調試的程序當中.Show Next Statement(Alt+Num*):此功能將顯示程序代碼的下一條語句,如果源代碼中找不到,則在Disassembly窗口中顯示語句. 當在Disassembly窗口中顯示時,可以單擊Disassembly 返回到源代碼窗口. Step Into(F11):此功能可以單步進入到在調試過程中所跟蹤的調用函數的語句的函數內部.如,當前語句是"d.Display()", 選擇Step Into(F11)後,Debugger將進入Display()函數內部並停在Display()函數內部的第一條語句上.(此時,就可以Step Over(F10)對Display()函數進行單步調試了.)Step Over(F10):此功能可以單步對所在函數單步調試,如果調試的語句是一個調用函數的語句時, Debugger將全速執行所調用的函數,單步(一步)通過所調用的函數,Debugger停該調用語句的下一條語句上.Step Out(Shift+F11):此功能將使Debugger切換回全速執行到被調用函數結束,並停在該函數調用語句的下一條語句上. 當確定所調用的函數沒有問題時可以用這個功能全速執行被調用函數.Run to Cursor(Ctrl+F10):此功能將全速執行到包含插入點游標所在的行,可以作為在插入點游標處設置常規斷點的一種選擇. 注意,當游標處不是一個有效的執行語句時此功能將不起作用. Go(F5):此功能將全速執行程序直到遇到一個斷點或程序結束,或直到程序暫停等待用戶輸入.
④ visual studio 2015怎麼用
附上出處鏈接:http://www.mamicode.com/info-detail-1089768.html
獲得Visual Studio 2015
進入Visual Studio 官方網站,點擊"下載Visual Studio社區"。
如果一切正常,你會得到一個大小大約為3MB的應用程序(我假設你知道如何下載,並且知道如何找到下載的文件):
雙擊它,稍等片刻,來到這個界面:
不用修改安裝目錄,選擇"自定義",點擊"下一步",來到這里:
只選擇"編程語言"下的"Visual C++",點擊下一步,來到這里:
核對一下,點擊"安裝",看到這個界面後:
就可以點擊"最小化"玩別的了,安裝過程大約要一個小時,期間需要保持網路暢通。
完成了!看到那個巨大的"啟動"了嗎?點!
在VS中建立一個C/C++程序項目
現在,我們就可以開啟VS之旅了!
打開VS2015,它可能會讓你登錄:
這里可以如果你願意,可以登錄,我這里選擇"以後再說":
這里的開發設置,我選擇"Visual C++",顏色我選擇了酷炫的"深色"。(根據喜好來就行,不必犯選擇困難症,反正以後也能改)
萬事俱備,"啟動Visual Studio"!
稍等片刻,你就會看到這個界面:
點擊菜單:"文件"-"新建"-"項目",會出現這個窗口:
選擇左側的"Visual C++"之後,選擇右側的"空項目",項目名稱填寫"MyFristCPromgram",點擊"確定"。(當然項目名你不必像我一樣寫這么長,隨便打幾個字母也是可以的)
之後,在左側的"解決方案資源管理器"中,右鍵"頭文件","添加","新建項"。(如果沒有左側的"解決方案資源管理器",可以點擊菜單:"窗口"-"重置窗口布局")
在彈出的窗口中,修改新項的名稱為"main.h"(你喜歡的話也可以用"main.c"或"main.cpp"或者隨便起名字)
現在就可以書寫你的代碼了:
讓我們向這個世界問好,寫下這些代碼:
點擊工具欄上的那個三角形的綠色按鈕("本地Windows調試器")來運行,或者更快捷的方式是直接按F5。
勾選"不再顯示此對話框",點擊"是"。
一閃而過!
"導演,劇本看起來不對啊!"
當你點擊運行按鈕或按F5後,程序一閃而過,怎麼回事,VS2015的BUG?
並不是,我們看看這段程序,這段程序只有一行printf,沒有任何別的語句,計算機瞬間就能執行完,執行完不就結束了嗎,這就是一閃而過的原因。
但是我要看輸出的文字啊,怎麼讓它在printf後停住呢?
很簡單只需要使用system("pause");命令即可,像這樣:
你會發現system被畫了紅色的波浪線,將滑鼠移上去發現VS告訴我們這是一個未定義的標識符,因為system所在的庫我們沒有包含,我們加上這行include:
按下F5,現在,你就已經學會如何使用Visual Studio來編寫和運行簡單的C/C++程序了:
補充
如果你不想為使用system("pause");包含一個庫,也可以使用scanf函數來等待輸入,從而暫停程序,或者你可以在最後一個花括弧那行,設置一個斷點,這種方法我們將會在之後詳細講解。
教練,scanf不能用?!
"VS的問題怎麼這么多!連scanf都不能用還寫C程序?"
等等,請你先冷靜下來,打勾"不再顯示此對話框"點擊"否",讓我們仔細看看輸出的這條錯誤信息:
error C4996: 『scanf『: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
VS告訴我們,這個函數可能不安全,應該考慮使用scanf_s來代替(到底哪裡不安全,有興趣的寶寶可以看本節尾部的選讀小節)。或者定義_CRT_SECURE_NO_WARNINGS宏來屏蔽這個警告。
所以第一種方式我們可以修改scanf為scanf_s,便可以通過編譯
它看上去工作良好!
"不行!我偏要用scanf!我偏要用!偏要用!!"
對於這種強迫症患者,我們可以通過定義_CRT_SECURE_NO_WARNINGS宏來關閉VS的安全警告:
這兩種方法任選其一即可,同時在關閉VS安全警告後,scanf_s仍然是可用的。
不安全的scanf(選讀)
當使用scanf通過%s讀入字元串的時候,很多初學者會忽略用戶輸入的字元串長度的問題,導致緩沖區溢出後程序不穩定。觀察下面這個程序:
首先程序開辟了5個字元的空間來接受輸入,但問題是,你並不知道用戶會輸入多少。
讓我們運行起來這個程序,輸入一個明顯大於5個字元的文本,測試一下:
"哈哈!什麼事情都沒有,你根本在嚇唬我!"
別高興的太早,按任意鍵結束這個程序:
VS給我們提出了警告,告訴我們"str"這個變數的堆棧不正常,其實這就是之前我們提到的術語"緩沖區溢出",當我們將長數據放入短位置的時候,多出來的部分就會覆蓋程序的其它數據,有時被覆蓋的東西不重要,程序正常工作,有時重要,程序崩潰,這就叫不安全。
"但是我用VC++6.0的時候可沒出這個錯啊?"
我想是因為VC++6.0太老舊,沒有檢查這種問題的能力。
這種問題還有一個比較隱蔽的發生形式:如果我們正好輸入5個字元呢?比如"Hello"。
事實上仍然會緩沖區溢出,因為字元串是以『/0『字元結尾,其本身也佔一個位置,所以"Hello"實際上是6個字元!
使用VS自動調整代碼縮進
經常我們從別處粘貼來的代碼縮進不正確,或者很多不拘小節的人寫代碼可能從來不注意縮進,雖然縮進不是C/C++語法的一部分,但是十分影響程序的可讀性。
就比如一個判斷三角形形狀的程序,有的小朋友就能寫成這樣:
別笑,這正是我見過的。這確實對編譯器並沒有什麼障礙,但是如果你要修改這樣的代碼,你得比平常多花起碼三倍精力。就比如我問你,倒數第二個else搭配的是哪個if?你能一眼看出來嗎。
現在我們使用VS的自動格式化代碼的功能,選擇要被格式化的代碼,這來我們選擇全部(Ctrl+A):
按住Ctrl,按一下K,按一下F,神奇嗎?
那麼現在我再問你,倒數第二個else搭配的是哪個if?
?
使用VS的斷點與單步跟蹤功能
經常,為了找出程序的問題點,我們可以在VS中設下斷點並且一步一步跟它著執行,觀察各個變數的變化情況,來找到錯誤的地方。
回到本文之前的那個計算完全平方的程序,右鍵for循環的那一行,"斷點"-"插入斷點"。(或者先將游標移動到這一行,然後按F9,再或者直接點擊行首空白處)
在本行的首部將出現一個紅圈,點擊這個紅圈可以取消斷點。
F5運行程序,為scanf_s輸入"10"回車,窗口會自動跳轉至VS,游標自動定位到斷點行。
這時將滑鼠移動到任意一個變數名上,就可以查看這個變數的值。我們移動到i這個變數上:
看到它擁有一個詭異的值。
"不對,啊,我不是給i賦值0了嗎?就在這行!"
是的,但斷點斷下的時刻是這行執行之前,也就是現在的i還沒被定義以及初始化,它的值自然是不確定的。
我們點擊這個大頭針,將固定顯示i的值。
你可以將它拖動到舒適的位置,甚至你還可以手動修改它的值,添加註釋,但這里我們不需要這樣做。
我們按F10讓程序向前走一步:
立即發現i的值變成了0,並且VS還用紅色顯示給我們,同時游標自動移動到了if語句,左邊的黃色箭頭表面當前程序運行到的位置。再按F10。
因為i滿足開方後仍然是整數的條件,所以進入了if分支,准備輸出這個i。
一路F10,你就可以觀察清楚整個程序i是何時增加,何時輸出。
當你不想再跟蹤的時候,點擊左邊的紅圈取消斷點,按F5,讓程序自己跑便是。
⑤ visual studio 2008如何進行斷點調試
設置完斷點後,可以選擇【Debug】菜單的【StartDebugging】選項進入調試狀態,也可以直接按F5鍵。程序會在斷點位置中斷,你可以動態監測甚至修改各個變數的值,單步跟蹤程序的執行等。通常可以設置若干個斷點,執行將在斷點指示的語句之前被停止。
呵呵,其實VS2008中還有更高級的斷點,比如跟蹤點。(按下Alt+F9會顯示斷點窗口)跟蹤點可以設置條件,在某個表達式為true或false時觸發,這有點像C++中的ASSERT和_DEBUG宏。跟蹤點也可以關聯自定義動作,比如列印一條消息或運行某個宏等。
總之,斷點為程序員調試程序提供了極大的方便。但我後面所說的跟蹤點似乎不被更多的程序員所了解,我和同行切磋時,很多人竟然不知道跟蹤點?!難道沒人看過MSDN么?!汗~圖中是調試狀態下的變數監視窗口和斷點窗口。希望能對你有所幫助。
⑥ 在VS2005里怎麼單步調試WEB應用程序我先按f5,再f10,可是不執行,具體怎麼做
先設置幾個斷點
按F5
程序會在斷點處暫停
按F11單步調試
⑦ 如何跟蹤vb源程序的代碼
設置斷點.按F8 邊執行邊觀察代碼.
⑧ vs2010如何單步調試設置斷點之後怎麼用怎麼觀察調試中變數的值
在代碼左邊的5毫米寬的豎條那裡點左鍵就能加入斷點。再點一下可以消去斷點。
運行到哪裡程序就會停下來。
F5是執行到下一個斷點,F10是執行一行語句,F11也是執行一行但是是遞歸調試所調用的函數。
watch窗口可以看變數。
Break窗口可以設置、刪除斷點。
⑨ VS2005如何單步調試C++程序
F9在需要的地方設上斷點,按F5執行程序,會在斷點處停下,然後按
F10
單步執行程序。
F11
可以進入函數內部.
⑩ 在C#編程VS2005中,調試時,怎麼才能看見單步運行的結果
窗口裡出不來運行的每一步的代碼!
窗口當然不會出來,代碼是在上面,下面只讓你參考那些變數的值什麼的
單步執行時,上面的代碼會一步步的標成黃色
點下面的即時窗口,那裡面可以輸入變數
比如你的程序有個string sql = "abc";
那麼在即時窗口裡輸入sql,然後回車,下面會顯示abc
也可以使用一些簡單的語句,比如:sql.Substring(0,1),會顯示a
監視窗口,可以輸入變數,比如sql:右邊會實時顯示當前sql的值