• <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>

            小明思考

            高性能服務(wù)器端計(jì)算
            posts - 70, comments - 428, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            WinDBG(CDB)實(shí)踐1-新手指南

            Posted on 2007-03-13 14:39 小明 閱讀(9215) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Win32ToolsDebug
            Step1
            下載最新的Debugging Tools for windows http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
            最新版本是6.6.7.5
            Step2
            設(shè)置好symbol server的環(huán)境變量
            Set _NT_SYMBOL_PATH=srv*c:\symbols*http://msdl.microsoft.com/download/symbols
            創(chuàng)建好c:\symbols目錄
            (BTW,如果要設(shè)置http代理set _NT_SYMBOL_PROXY=proxy_server:port)

            Step3
            把WinDBG(CDB)安裝路徑加到path中(默認(rèn)是C:\Program Files\Debugging Tools for Windows)
            設(shè)置CDB為默認(rèn)的JIT debugger
            C:\>cdb -iae

            Step4
            使用vc6創(chuàng)建一個(gè)控制臺(tái)程序Crash,主程序?yàn)閏rash.cpp
             1 // Crash.cpp : Defines the entry point for the console application.
             2 //
             3 
             4 #include "stdafx.h"
             5 
             6 int main(int argc, char* argv[])
             7 {
             8     for(int i=0;i<10;++i)
             9         printf("Hello World!%s\n",i);
            10     return 0;
            11 }

            可以看到該程序就第九行有一個(gè)錯(cuò)誤,%s應(yīng)該寫(xiě)成%d

            Step 5
            編譯生成release版本(這里我主要針對(duì)Release程序)
            注意設(shè)置
            crash1.jpg


            crash2.jpg

            最后會(huì)生成Crash.exe和Crash.pdb和其他一些中間文件

            Step 6
            運(yùn)行Release版本的crash.exe會(huì)出現(xiàn)crash,這時(shí)CDB會(huì)自動(dòng)attach到該進(jìn)程,開(kāi)始調(diào)試
            出現(xiàn)如下畫(huà)面

            Hello World!(null)

            Microsoft (R) Windows Debugger  Version 6.6.0007.5
            Copyright (c) Microsoft Corporation. All rights reserved.
            *** wait with pending attach                                                                                  
            Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols
            Executable search path is:                                                                                      
            ModLoad: 00400000 0040c000   D:\Test\Crash\Release\Crash.exe                       
            ModLoad: 77f80000 77ffc000   C:\WINNT\system32\ntdll.dll                                
            ModLoad: 7c570000 7c624000   C:\WINNT\system32\KERNEL32.dll                
            (e04.f18): Access violation - code c0000005 (!!! second chance !!!)                       
            eax=00000001 ebx=7ffdf073 ecx=00000001 edx=7fffffff esi=7ffffffe edi=00000800
            eip=004016dd esp=0012fcf8 ebp=0012ff50 iopl=0         nv up ei pl nz na pe nc       
            cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000206   
            *** WARNING: Unable to verify checksum for D:\Test\Crash\Release\Crash.exe    
            Crash!_output+0x49a:                                                                                               
            004016dd 803800          cmp     byte ptr [eax],0           ds:0023:00000001=??          
            0:000>

            輸入.lines load source code information
            輸入k命令查看堆棧

            0:000> .lines
            Line number information will be loaded
            0:000> k
            ChildEBP RetAddr
            0012ff50 0040103f Crash!_output+0x49a
            0012ff70 0040100e Crash!printf+0x1f
            0012ff80 00401105 Crash!main+0xe [D:\Test\Crash\Crash.cpp @ 9]
            0012ffc0 7c5989a5 Crash!mainCRTStartup+0xb4
            0012fff0 00000000 KERNEL32!BaseProcessStart+0x3d

            可以發(fā)現(xiàn)程序在Crash.cpp第9行crash

            輸入q命令退出cdb,結(jié)束調(diào)試。

            久久发布国产伦子伦精品| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 精品人妻伦一二三区久久| 伊人久久一区二区三区无码| 一级做a爰片久久毛片看看| 久久久久久伊人高潮影院| 久久久久99精品成人片| 亚洲国产精品久久久久婷婷老年| 18禁黄久久久AAA片| 色婷婷狠狠久久综合五月| 精品久久久无码中文字幕天天| 伊人久久国产免费观看视频 | 久久久久久久久无码精品亚洲日韩| AAA级久久久精品无码片| 久久久久亚洲AV无码麻豆| 国产精品无码久久综合网| 久久久中文字幕日本| 久久精品国产亚洲AV不卡| 久久精品www人人爽人人| 狠狠色丁香久久婷婷综合图片| 伊人色综合久久| 99精品久久精品| 99久久精品费精品国产| 久久久久久久久久久久中文字幕 | 久久国产欧美日韩精品| 久久精品亚洲男人的天堂| 久久夜色精品国产亚洲| 久久久久人妻一区精品| 青青热久久综合网伊人| 久久精品无码一区二区无码| 久久精品国产精品亚洲精品 | 久久久噜噜噜久久| 久久国产精品一区| 国内精品久久久久久久亚洲 | 久久99中文字幕久久| 国内精品久久久久久麻豆| 亚洲一本综合久久| 国产精品日韩深夜福利久久| 久久综合久久性久99毛片| 久久99精品久久久久久水蜜桃 | 伊人久久大香线蕉影院95|