青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一直比較好奇,調試器是如何生成堆棧的調用過程的,比如如下代碼:
int add(int a, int b)
{
    return a + b;
}

int main()
{
    int c = add(1, 2);
    system("pause");

    return 0;
}

調用Add時的堆棧截圖如下:


調試器究竟是如何生成這個堆棧過程的呢?

我最初的理解調試器是根據EBP來生成該堆棧的,原理如下:

可以看到按照上面的原理, 每次EBP里存放的都是當前函數的堆棧楨基址,所以我們只要一直遞推,就可以得到完整的Call Stack.

但是我們很快會發現, 并不是每個函數都是以
push ebp   
mov ebp, esp
開頭的,我們可以寫一些裸(naked)函數,
比如int __declspec(naked) add(int x,int y) 來手動控制函數頭,
而且很多編譯器優化過的函數代碼也是沒有該標準函數頭的。

那么調試器在這種情況下又是如何生成完整的call stack的呢?

和群里的朋友討論的結果是調試器很可能是在調用call指令時保存了調用現場,
這樣只要在調試器下運行,它就一直可以知道正確而完整的call stack.

這也解釋了為什么我們在分析Crash的Dump文件時很多時候得不到正確的堆棧過程?
有可能是堆棧本身被我們的異常代碼破壞了;
更有可能是因為我們的代碼在直接運行時沒有調試器的參與, 所以堆棧過程沒有被保存,所以windbg分析dump時只能根據堆棧里內容自己分析和推理堆棧調用過程,所以很多時候得不到正確的堆棧過程。

那么Windbg分析dump時,會如何倒推堆棧過程呢?

如果每個函數都是有標準的push ebp, 那么按照ebp遞推就可以了;
否這就只能用其他方法分析,比如看看堆棧里某個地址是不是函數返回地址(該地址屬于某個模塊的代碼段),這樣就可以確定該地址是某個函數堆棧楨的起始地址。

上面關于生成call stack的原理只是一些非專業人士的個人看法,如果有不正確的地方,歡迎指正。

注: 和開發過調試器的朋友討論,上面 關于callstack產生原理的推論,實際上是不正確的, 調試器實際上是通過查詢PDB文件的方式獲取的callstack.
posted on 2012-07-20 14:00 Richard Wei 閱讀(5397) 評論(3)  編輯 收藏 引用 所屬分類: 匯編

FeedBack:
# re: 堆棧楨的生成原理
2012-07-20 15:31 | Richard Wei
據寫過調試器的朋友指點,調試器會盡量減少代碼運行時的干預,所以上面關于函數調用時調試器保存調用現場的猜測,應該是不正確的。
調試器更多的可能是根據PDB文件信息來計算推理的,如果沒有PDB文件,它就只能猜測,很多堆棧信息就會出錯了。

據說<<軟件調試>>里有相關介紹,回頭看下, 希望這篇博文不要誤導他人。  回復  更多評論
  
# re: 堆棧楨的生成原理[未登錄]
2012-07-20 21:19 | Korall
“和群里的朋友討論的結果是調試器很可能是在調用call指令時保存了調用現場,
這樣只要在調試器下運行,它就一直可以知道正確而完整的call stack.”

猜測確實不太符合實際;我還沒有見過哪一款調試器是這樣實現的,虛擬機除外。
就算是在調試器下運行,不設置“堆棧幀”的函數調試器也是無法知道正確而完整的 call stack 的。  回復  更多評論
  
# re: 堆棧楨的生成原理
2012-07-21 00:14 | fzy
call 會push下一條指令的地址到堆棧。
可能是根據這個來進行堆棧幀的檢測。
  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美综合在线| 久久电影一区| 久久国产精品免费一区| 亚洲男女毛片无遮挡| 一本色道久久综合亚洲精品不| 亚洲第一综合天堂另类专| 亚洲国产精品久久| aa成人免费视频| 午夜精品久久久久久久99樱桃| 午夜国产精品影院在线观看| 久久精品理论片| 欧美福利视频在线| 亚洲美女视频| 午夜亚洲性色福利视频| 久久精品一区中文字幕| 欧美精品三区| 国内成人精品一区| 99国产精品久久久久老师| 性久久久久久久久久久久| 免费av成人在线| 亚洲视频在线看| 美女999久久久精品视频| 欧美午夜剧场| 在线免费观看日本欧美| 亚洲一区二区四区| 欧美成人情趣视频| 午夜精品av| 欧美精品九九| 在线成人欧美| 欧美一区亚洲一区| 亚洲免费av电影| 久久亚洲国产精品一区二区| 国产精品久久久久影院色老大| 91久久久久| 久久久青草婷婷精品综合日韩| 亚洲精选视频免费看| 国产亚洲欧美一区二区三区| 欧美日韩一区二区三区在线| 国产一区二区三区在线观看精品| 日韩视频免费观看高清在线视频| 欧美中文字幕第一页| 日韩一区二区精品| 欧美成人自拍视频| 黄色小说综合网站| 欧美在线免费看| 亚洲影视综合| 欧美日韩一区二区精品| 亚洲精品国产精品国自产观看浪潮| 久久国产精品99国产| 亚洲一区二区视频在线| 国产精品v日韩精品| 亚洲免费成人av| 亚洲黄色尤物视频| 久久在线视频| 在线精品视频在线观看高清| 久久精品国产清高在天天线| 亚洲在线成人精品| 国产精品午夜国产小视频| 亚洲免费在线电影| 亚洲一区国产精品| 国产精品自拍一区| 久久精品日韩一区二区三区| 欧美一区2区视频在线观看| 国产视频久久网| 久久久久久久久蜜桃| 久久久久.com| 亚洲欧洲另类| 亚洲美女尤物影院| 国产精品久久久久aaaa| 午夜精品福利一区二区三区av| 亚洲一级黄色av| 国产在线麻豆精品观看| 嫩草成人www欧美| 欧美精品不卡| 香蕉成人啪国产精品视频综合网| 亚洲欧美国产日韩中文字幕| 韩日精品视频| 亚洲国产成人在线播放| 欧美日韩亚洲三区| 欧美在线视频一区二区| 久久视频这里只有精品| 99视频一区二区三区| 亚洲一区视频在线| 亚洲电影有码| 日韩亚洲欧美高清| 国产主播一区| 亚洲激情电影在线| 国产精品人人爽人人做我的可爱| 久久视频一区| 欧美日韩调教| 美女成人午夜| 欧美性生交xxxxx久久久| 久久久国产精品一区二区中文| 免费久久99精品国产| 亚洲一区二区三区国产| 久久九九全国免费精品观看| 一区二区三区精品视频| 免费看黄裸体一级大秀欧美| 亚洲国产一区二区三区在线播 | 久久久久久亚洲综合影院红桃 | 欧美成ee人免费视频| 欧美高清视频在线播放| 午夜精品久久久久久久男人的天堂 | 欧美主播一区二区三区美女 久久精品人| 在线观看91精品国产麻豆| 99精品热6080yy久久| 极品中文字幕一区| 亚洲视频一二| 日韩视频在线免费| 久久久不卡网国产精品一区| 亚洲无限乱码一二三四麻| 久久精品最新地址| 性色av香蕉一区二区| 欧美激情第3页| 欧美成人一区二区| 国产原创一区二区| 亚洲女女做受ⅹxx高潮| 国产精品99久久久久久久vr | 亚洲一区二区成人在线观看| 亚洲第一网站| 久久国产精品72免费观看| 午夜精品免费视频| 欧美日韩不卡| 亚洲黄色成人网| 亚洲激情电影在线| 久久男人资源视频| 久久久.com| 国内成人精品视频| 欧美专区一区二区三区| 久久精品官网| 国产午夜精品理论片a级大结局| 99国产精品国产精品毛片| 日韩亚洲精品在线| 欧美精品粉嫩高潮一区二区 | 亚洲视频视频在线| 欧美日韩亚洲一区二区| 日韩手机在线导航| 在线亚洲一区| 国产精品久久久久aaaa| 中文精品99久久国产香蕉| 亚洲一区二区三区中文字幕| 欧美日韩免费一区| 亚洲深爱激情| 久久激情久久| 精品二区视频| 欧美99久久| 日韩视频永久免费| 午夜精品久久久久久久白皮肤| 国产精品草莓在线免费观看| 国产欧美综合一区二区三区| 久久av资源网站| 欧美在线观看日本一区| 国产一区二区三区自拍| 久久精品国产亚洲a| 久久阴道视频| 亚洲日本欧美在线| 国产精品成人免费| 久久se精品一区二区| 欧美不卡激情三级在线观看| 亚洲久久一区| 国产九区一区在线| 久久性天堂网| 宅男噜噜噜66一区二区| 久久久综合网站| 9i看片成人免费高清| 国产精品一区二区久久精品| 久久精品二区三区| 亚洲精品一区二区三区99| 性欧美大战久久久久久久免费观看 | 欧美一区亚洲| 亚洲国产一成人久久精品| 欧美日韩免费高清| 性高湖久久久久久久久| 亚洲国产精品成人精品| 亚洲欧美在线免费观看| 亚洲成在人线av| 国产精品网站在线| 欧美国产乱视频| 久久国产一区二区| 一区二区三区不卡视频在线观看 | 亚洲深夜福利网站| 久久久久国产精品一区| 一区二区三区国产在线| 好吊妞**欧美| 国产精品看片资源| 免费亚洲婷婷| 欧美一级片久久久久久久| 91久久精品网| 美脚丝袜一区二区三区在线观看 | 日韩一二三区视频| 伊人成综合网伊人222| 国产伦精品一区二区三区高清版 | 欧美+日本+国产+在线a∨观看| 亚洲在线观看视频| 亚洲人体一区| 亚洲黄色在线看| 免费成年人欧美视频| 欧美资源在线观看| 亚洲欧美在线播放| 亚洲在线国产日韩欧美|