最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

剖析賦值語句的機器碼 - 調(diào)試程序

2023-02-23 16:27 作者:程序員老秦  | 我要投稿

調(diào)試程序:

int?gi;

int?main()

{

gi?= 0xffffffff;

return?0;

}

在第4行打斷點


調(diào)試 ---> 窗口 ---> 反匯編,或者是alt + 8快捷鍵;


此時此刻可以看到反匯編代碼,點擊右鍵,把紅色方框的全部選擇,就可以看到C語言中無法看到的信息了。


接著我們來分析一下關(guān)鍵的代碼和符號,如圖所示的1 2 3。


此時此刻應(yīng)該有3個問題:

1、C7 05代表什么意思?

2、內(nèi)存地址00EFA138h到底代表什么意思?它真的是變量gi的地址值嗎?

3、Mov指令的地址是什么?是不是這個00EF1728呢?


好的我們先回答第一個問題 C7 05 其實就是mov指令的機器碼。這個大家應(yīng)該都知道。


接著我們先來研究第三個問題,0x00EF1728到底是不是mov指令的地址,我們按照如下步驟。


調(diào)試 ---> 內(nèi)存 ---> 內(nèi)存1


把0x00EF1728拷貝到該窗口,從下面的窗口我們就看到了確確實實看到了C7 05,

所以驗證了我們的想法。


接著我們再回過頭來看第2個問題,內(nèi)存地址00EFA138h到底代表什么意思?

首先按照下面步驟:1 調(diào)試 ---》 2 監(jiān)視---》 3 監(jiān)視1


然后把gi變量和&gi拷貝到窗口,大家可以看到,0X00EFA138h確確實實是變量gi的地址值。


我們按F11逐語句繼續(xù)運行,可以看到gi的值變成了0Xffffffff,驗證了我們的猜想。


我們還可以從另外的角度來佐證我們的猜想;

重新運行程序,觸發(fā)斷點;

我們還是把內(nèi)存監(jiān)控的窗口調(diào)出來,在程序沒有運行到gi = 0xffffffff之前;

我們就修改內(nèi)存里面的值,具體修改方法如下,右鍵-->編輯值。


大家可以看到值變?yōu)榱思t色這塊的00000001,這是我手動修改的。


接著按下F11,發(fā)現(xiàn)了,我改了內(nèi)存里面的值,就算運行了gi = 0xffffffff;

我們監(jiān)控的gi的值卻變?yōu)榱?,而不是0xffffffff;

所以再一次驗證了我們的猜想。


這個地址確實是 gi的地址。


總結(jié):

1 、C/C++的調(diào)試環(huán)境,確實比較好玩,尤其是調(diào)試環(huán)境的反匯編、監(jiān)視窗口、內(nèi)存窗口、單步、斷點、mov 指令、全局變量賦值的反匯編、對指令建立了形象的認知,并直接構(gòu)建了指令,直接改變了內(nèi)存的值。

2、 調(diào)試學(xué)習(xí)過程就是我們探索式學(xué)習(xí)很好的例子,分為由淺及深的三階段∶深入剖析 → 部分修改 → 全新構(gòu)建。我們要善于將自己的探索過程分解為:假設(shè) ---》 實證 ---》 推進,這樣子的過程。通過這樣子的鍛煉,我們的分析能力會更上一層樓。


剖析賦值語句的機器碼 - 調(diào)試程序的評論 (共 條)

分享到微博請遵守國家法律
屯昌县| 莒南县| 东海县| 平谷区| 宝丰县| 新野县| 文水县| 夏河县| 上饶市| 江安县| 宜阳县| 正蓝旗| 大悟县| 蒲城县| 交口县| 阳泉市| 广灵县| 昭通市| 虹口区| 迭部县| 蒙阴县| 巴中市| 清丰县| 无锡市| 赣州市| 读书| 永泰县| 盈江县| 万源市| 四子王旗| 含山县| 报价| 建平县| 香格里拉县| 搜索| 应用必备| 潼南县| 郸城县| 永丰县| 阿拉尔市| 民勤县|