VS调试查看寄存器学习总结
生活随笔
收集整理的這篇文章主要介紹了
VS调试查看寄存器学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
vs2008 調試時如何查看寄存器內容
調試菜單里沒找到。
怎么調出來?
謝謝。
debug→windows→registers
在調試狀態,然后主菜單的調試->窗口->寄存器?
或者按快鍵ALT+5?
先下斷點,然后按F5或者點擊Debug->Start Debuging程序停在斷點處。
然后點擊按鈕 Debug->Windows->DisAssambly
中文版是:菜單“調試 > 窗口 > 反匯編?
接著按Ctrl+Alt+D組合鍵打開反匯編窗口
========
在VS中調試C#程序,如何查看內存、寄存器、反匯編
http://blog.csdn.net/judyge/article/details/41315947想查看反匯編代碼,可在代碼窗口中點右鍵->選擇“轉到反匯編”即可。在匯編代碼窗口中,可以按F11來單步執行,以便更精確地跟蹤代碼的執行。
若想同時查看寄存器的變化情況,可以點擊VS中的“調試”->“窗口”->“寄存器”菜單項。(需在調試過程中才會顯示有此菜單項,如,程序執行到了斷點而暫停時。如果在調試狀態還是沒有此菜單項,可試著以下操作:在VS中點擊“工具”->“導入和導出設置”,選擇“重置所有設置”,下一步,這時你可以保存當前設置或不保存,我覺得無所謂,下一步,選擇“Visual C#開發設置”,“完成”。這樣,“調試”->“窗口”->“寄存器”菜單項應該用顯示出來了,記得要確保你的程序是在調試的過程中。)
關于查看內存,點擊“調試”->“窗口”->“內存”->“內存1”...“內存4”(選一個就可以了。)。在內存窗口中的“地址”欄輸入地址,按回車即可看到該地地址處的內存信息。
========
vs2010中查看內存和寄存器
http://blog.csdn.net/shuiniu1224/article/details/21997221今天講一下如何從VS2010中查看內存和寄存器狀態,一般來講,只要從事C/C++編程的人,基本上對于這篇文章完全可以略過了,但寫這篇文章的初衷在于,自己也是從這一步中過來的,記得當年自己其實也不知道如何快速使用VS中各種工具,導致花了很多時間在查找資料上面。所以,本文基本上可以說是面向菜鳥級選手了。廢話不多說,直接上菜。。。
一、查看寄存器
通常來說,在進行C或C++編程的時候,對于寄存器的查看還是不常用。但如果你在進行匯編代碼編程,那么學會查看相關寄存器便顯得非常重要,你可以從相關寄存器的值來確定各參數值是否有誤,從而幫你快速檢查代碼。
如何查看寄存器?本文采用一個非常簡單的程序進行演示,如下圖1所示
圖1
按下F5,全速運行到第12行處,此行代碼顯示的是調用一個進行簡單加法的運算。
這里需要提及的是C/C++的函數調用約定,這是一個非常重要的概念,不懂的人一定要上網查看下win32下函數調用約定是什么意思,C/C++默認的調用約定是__cdecl,這種調用約定的其中一條是關于函數如何傳參以及堆棧如何處理的問題,回到我們的例程,我們按下ALT+8進入反匯編,如下圖2所示
圖2
從上圖我們可以看到,進入匯編代碼后,我們按下ALT+5(也可到調試->窗口中看到),就可以看到寄存器窗口了,單步調試我們可以看到,程序首先將b送到寄存器EAX中,因此我們看到EAX的值變為2,然后把eax即b值壓入堆棧中,同理,再把b送到ECX并壓入堆棧(__cdecl調用約定規定傳參從右至左依次壓入堆棧),最后調用add函數,至于如何進入add調用下次再講。這里我們就學會了查看寄存器了,至于其他寄存器變量分別代表什么意思,希望讀者自己查閱相關資料,此處略去。
二、查看內存
查看內存是使用VS2010進行編碼的一個非常基本的技能了,快速而準確地查看內存,可以幫助你準確分析代碼中各變量的取值,以及存儲狀態,幫助你發現程序中的BUG,改進代碼的健壯性。
如何查看內存?繼續采用以上的例程進行說明,將程序F5到第13行,再單步到下一句
圖3
按下ALT+6,此時我們可以看到內存1的窗口,我們從自動窗口中先找到指針p的地址,然后將地址復制到內存地址欄中,回車,即可看到此時地址中的值。內存窗口中左邊的灰色值代表地址,右邊則表示地址中存儲的值。我們可以看到p地址對應的值為03,但后面還有000000跟著,其實因為我們存儲的是一個整數值,需要4個字節存儲,因此就算P中結果是3,也同樣占用了4個字節。
這里還需要注意的一個概念是,大端法存儲和小端法存儲的概念。回到上面圖中我們可以看出,內存地址從左至右,從上至下是依次增大的。我們這個值3其實正確的讀法應該是從右至左讀取的,即0x00000003,03是在最低位,而03也是存儲在內存地址中的低地址中的,因此這是小端法存儲,大端法則剛好相反。需要了解這方面更多信息的人,一定要上網查找更多資料多學習,本文就不再詳述。
好了,以上就是本文的內容了,非常簡單,有問題請留言。。。
========
VS看反匯編、寄存器、內存、堆棧調用來學習程序設計
http://blog.csdn.net/dinghqalex/article/details/43151143? ? ? ?其實計算機這套東西是真的太大了,太多的東西要學要理解更要掌握。學習的時候要不斷拆分理解才能掌握得更牢固,學程序的時候可以通過查看程序的運行過程進而加深自己對程序設計的理解,調試出最優化的代碼。
? ? ? ?VisualStudio,微軟的高端IDE,可以寫C/C++可以搞C#,寫網站等等,牛逼得爆。VS調試方便功能強大,一般公司也用它來開發。我在學C++的時候也是用的VS,在學習的時候感覺用到的東西越來越多,還沒理解得東西也很多,比如說堆棧調用,寄存器等等,然后就了解到VS的反匯編、寄存器、內存、堆棧調用等等功能窗口。
? ? ? ?好了 ?還是來扯怎么看這些東西,怎么玩
1. 首先還是新建一個C/C++項目,然后找個地方打上斷點
我項目代碼是這樣的,我在第5行的時候加了個斷點,然后讓程序停下來了。
2. 用快捷鍵看反匯編、寄存器、內存、堆棧調用
下面是快捷鍵
ALT+5是寄存器窗口:
ALT+6是內存地址窗口:
ALT+7是調用堆棧的窗口(在程序很大的時候通過堆棧調用窗口來看程序在哪個函數停止的,里面變量哪里是空指針等,是很有用的):
ALT+8是反匯編窗口:
? ? ? ?都說項目是調試出來的,是真的,寫代碼寫得開心,可能在加班玩命堆代碼的時候功能倒是做完了,但是有些地方有很多隱形的Bug,或許是同時忘了判斷空指針等等小問題,程序老是崩潰,調試代碼的技術還是很有必要的。
? ? ? ?用這幾個窗口可以快速定位問題和學習C++和計算機系統。
========
總結
以上是生活随笔為你收集整理的VS调试查看寄存器学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。