亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

WinDbg調試.NET程序入門

2019-11-14 15:48:55
字體:
來源:轉載
供稿:網友

俗話說:萬事開頭難!

自從來到新公司遇到性能問題后,需要想辦法解決這個問題,但是一直沒有合適的性能分析工具,然后找到StevenChennet 大神幫忙,他用WinDbg工具遠程幫我分析了一個 dump文件,但是只看到鍵盤 “啪啪啪”,得到了結果,卻不是很清楚WinDbg神奇具體如何使用的。結果,第二天,性能問題又來了,總不能每次勞煩大神駕到,所以不得不自己開始學習WinDbg,這里記錄一個入門過程。

1,首先,下載并安裝WinDbg程序

從下面的地址打開:
https://msdn.microsoft.com/en-us/windows/hardware/hh852365
然后看到
Standalone Debugging Tools for Windows (WinDbg)
下載。
安裝好后,在開始-》Windows Kits文件夾下有 WinDbg(x86),WinDbg(x64) 兩個程序的快捷方式,如果你要調試
64位的程序,就用WinDbg(x64)。

2,創建內存轉儲文件

可以在任務管理器,進程-》創建轉儲文件 里面,得到當前進程的dump文件,我是用下面這個程序來生成轉儲文件的:
PRocdump
下載地址:https://technet.microsoft.com/en-us/sysinternals/dd996900.aspx
有關 ProDump程序的使用,可以參考下面2個博客文章:
High CPU Dump收集工具 - ProcDump使用方法

介紹一個好用的抓取dump的工具-ProcDump

在命令行,運行這個程序:

procdump -ma mydotNetApp.exe d:/myapp.dmp

運行后,將得到一個myapp.dmp 文件,如果這個文件是在本機生成的,那么VS2013可以直接打開這個文件并可以分析托管內存,但是,往往內存轉儲文件是 在服務器生成的,而服務器又很可能跟開發環境不一樣,所以才需要本文介紹的 WinDbg來調試。


3,配置調試環境


首先,打開我們剛才的轉儲文件,可以使用菜單命令打開:
File->Open Crash Dump...
打開后,會顯示程序當時運行所在的環境,此時,會提示符號文件沒有發現:

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 

如果不配置,使用命令的時候會提示錯誤,比如:

0:000> .loadby sos clrjit0:000> !tp*** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - ************* Symbol Loading Error Summary **************Module name            Errorclr                    PDB not found : e:/appserver/symbols/dll/clr.pdb

e:/appserver 是我的dmp文件所在的目錄,它默認是到symbols 子目錄去找符號文件去了。

然后,配置下使用此文件的調試環境。
在菜單命令 File->Symbol path... 打開對話框,選擇瀏覽,找到dmp文件所在目錄相關的程序文件目錄 E:/AppServer ,該目錄下面有程序相關的 exe,pdb 文件。

輸入下面的命令:

0:000> .sympath+ c:/symbolsSymbol search path is: E:/AppServer;c:/symbolsExpanded Symbol search path is: e:/appserver;c:/symbolsError: Attempts to access 'c:/symbols' failed: 0x2 - 系統找不到指定的文件。************* Symbol Path validation summary **************Response                         Time (ms)     LocationOK                                             E:/AppServerError 

這里不用管,這個文件夾后面可以生成。

0:000> .symfix0:000> .symfix+ c:/symbols0:000> .sympathSymbol search path is: srv*Expanded Symbol search path is: SRV*c:/symbols*http://msdl.microsoft.com/download/symbols************* Symbol Path validation summary **************Response                         Time (ms)     LocationDeferred  

這下對了。
執行下 reload命令:

0:000> .reload............................................................................................................................................

接著執行下面:

0:000> .loadby sos clr0:000> !tpThe version of SOS does not match the version of CLR you are debugging.  Pleaseload the matching version of SOS for the version of CLR you are debugging.CLR Version: 4.0.30319.296SOS Version: 4.6.96.0Failed to load data access DLL, 0x80004005

這里提示說SOS的版本更CLR不匹配,這里需要找到當時生成Dump文件所在的服務器上的 sos.dll,注意,因為服務器程序是64位的,所以必須在 .Net Framework64 目錄去找,同時把 mscordacwks.dll 文件一起拷貝過來(先暫時不用,下面馬上會講到)。

剛才這個命令執行后,我們驚喜的發現,c:/symbols 目錄自己創建了,并且下載了 clr.pdb等幾個目錄,這是再將剛才服務器上拷貝的 sos.dll, mscordacwks.dll ,放到本地機器的 c:/symbols 目錄下面。

再次執行這幾個命令:

0:000> .reload............................................................................................................................................0:000> .loadby sos clr0:000> !tpThe version of SOS does not match the version of CLR you are debugging.  Pleaseload the matching version of SOS for the version of CLR you are debugging.CLR Version: 4.0.30319.296SOS Version: 4.6.96.0Failed to load data access DLL, 0x80004005

還是報錯,看來 sos.dll 沒有加載正確,用下面的命令:

0:000> .load c:/symbols/sos.dll0:000> .loadby sos clr0:000> !tp

這里load命令必須帶SOS.dll的路徑。加載了它,然后執行 .loadby sos clr ,表示調試.NET托管程序。

開始漫長的等待,程序窗口提示:

*BUSY*
Downloading symbols for [clr.pdb] /

等到相關的符號文件全部下載完畢,終于出現了久違的成功界面:

CPU utilization: 11%Worker Thread: Total: 8 Running: 0 Idle: 8 MaxLimit: 32767 MinLimit: 8Work Request in Queue: 0--------------------------------------Number of Timers: 14--------------------------------------Completion Port Thread:Total: 1 Free: 1 MaxFree: 16 CurrentLimit: 0 MaxLimit: 1000 MinLimit: 8

4,獲取幫助信息

有關WinDbg詳細的調試命名,可以參考下面文章:
windbg調試命令
http://www.49028c.com/kekec/archive/2012/12/02/2798020.html

或者,你也可以隨時用幫助,查看如何使用:

0:000> !help-------------------------------------------------------------------------------SOS is a debugger extension DLL designed to aid in the debugging of managedprograms. Functions are listed by category, then roughly in order ofimportance. Shortcut names for popular functions are listed in parenthesis.Type "!help <functionname>" for detailed info on that function. Object Inspection                  Examining code and stacks-----------------------------      -----------------------------DumpObj (do)                       ThreadsDumpArray (da)                     ThreadStateDumpStackObjects (dso)             ip2MDDumpHeap                           UDumpVC                             DumpStackGCRoot                             EEStackObjSize                            CLRStackFinalizeQueue                      GCInfoPrintException (pe)                EHInfoTraverseHeap                       BPMD                                    COMStateExamining CLR data structures      Diagnostic Utilities-----------------------------      -----------------------------DumpDomain                         VerifyHeapEEHeap                             VerifyObjName2EE                            FindRootsSyncBlk                            HeapStatDumpMT                             GCWhereDumpClass                          ListNearObj (lno)DumpMD                             GCHandlesToken2EE                           GCHandleLeaksEEVersion                          FinalizeQueue (fq)DumpModule                         FindAppDomainThreadPool                         SaveModuleDumpAssembly                       ProcInfo DumpSigElem                        StopOnException (soe)DumpRuntimeTypes                   DumpLogDumpSig                            VMMapRCWCleanupList                     VMStatDumpIL                             MinidumpMode                                    AnalyzeOOM (ao)Examining the GC history           Other-----------------------------      -----------------------------HistInit                           FAQHistRootHistObjHistObjFindHistClear

也可以使用 .help命令,這個不一樣,這里列出部分命令:

0:000> .help. commands:   .allow_exec_cmds [0|1] - control execution commands   .allow_image_mapping [0|1] - control on-demand image file mapping   .apply_dbp [<options>] - add current data breakpoint state to a                            register context   .asm [<options>] - set disassembly options   .asm- [<options>] - clear disassembly options   .attach <proc> - attach to <proc> at next execution   .block { <commands> } - brackets a set of commands for nested execution   .break - break out of the enclosing loop

也可使用.hh命令:
 Use ".hh <command>" or open debugger.chm in the debuggers directory to get
detailed documentation on a command.

OK,有了dump文件生成,調試環境配置,還有幫助命令,現在總算是入門了。

  

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人综合亚洲| 在线视频日韩精品| 亚洲国产女人aaa毛片在线| 曰本色欧美视频在线| 国产亚洲福利一区| 欧美黑人巨大精品一区二区| …久久精品99久久香蕉国产| 欧美大片免费观看在线观看网站推荐| 久久综合色88| 色777狠狠综合秋免鲁丝| 亚洲欧美成人在线| 亚洲精品欧美日韩| 国产精品久久久久久久7电影| 欧洲永久精品大片ww免费漫画| 欧美一级黑人aaaaaaa做受| 这里只有精品在线观看| 97在线精品国自产拍中文| 亚洲免费一级电影| 国产精品久久久久久亚洲影视| 中文字幕亚洲无线码a| 亚州av一区二区| 川上优av一区二区线观看| 亚洲国产欧美在线成人app| 国产日韩欧美在线| 国产成人在线精品| 亚洲18私人小影院| 国产精品自产拍在线观看| 国产精品入口免费视频一| 国产精品视频一区二区三区四| 精品中文字幕视频| 亚洲mm色国产网站| 中文字幕在线看视频国产欧美在线看完整| 国产精品一二三视频| 日韩成人在线电影网| 欧美寡妇偷汉性猛交| 久久精品国产99国产精品澳门| 色综合天天狠天天透天天伊人| 色av吧综合网| 亚洲国语精品自产拍在线观看| 欧美黄色片在线观看| 国产亚洲美女久久| 国产精品欧美久久久| 久久久久久久久久久免费精品| 在线播放日韩av| 国产欧美一区二区三区久久人妖| 久久天天躁狠狠躁夜夜躁| 国产精品99久久99久久久二8| 国产精品福利网| 国产精品白丝av嫩草影院| 亲子乱一区二区三区电影| 欧美激情在线有限公司| 91午夜理伦私人影院| 日韩精品免费综合视频在线播放| 国产视频在线一区二区| 亚洲欧美日韩爽爽影院| 成人亚洲综合色就1024| 亚洲影院在线看| 91亚洲人电影| 亚洲毛片一区二区| 国产精品无av码在线观看| 曰本色欧美视频在线| 久久人91精品久久久久久不卡| 欧美精品亚州精品| 国内揄拍国内精品| 国内成人精品视频| 欧美激情videoshd| 欧美激情国内偷拍| 国内免费精品永久在线视频| 久久综合久久八八| 亚洲精品欧美极品| 国产精品黄页免费高清在线观看| 欧美一级大片在线观看| 欧美极品少妇与黑人| 国产精品91久久| 久久这里有精品视频| 久久97精品久久久久久久不卡| 欧美成人午夜视频| 国产精品视频一区二区三区四| 91日韩在线视频| 日韩中文理论片| 久久精品国产69国产精品亚洲| 国内伊人久久久久久网站视频| 欧美日韩加勒比精品一区| 亚洲片在线资源| 国产一区二区三区三区在线观看| 国产亚洲欧洲高清| 欧美日韩综合视频| 国产精品永久免费视频| 成人午夜在线观看| 国产精品网址在线| 在线播放日韩专区| 久久精品视频在线播放| 91在线无精精品一区二区| 性色av一区二区三区在线观看| 欧美激情一区二区三级高清视频| 成人网中文字幕| 国产不卡av在线| 国产精品综合不卡av| 欧美高清videos高潮hd| 国产精品久久久久久久久久久久久久| 日韩av在线影院| 国语自产精品视频在线看抢先版图片| 超碰日本道色综合久久综合| 97视频免费观看| 黑人精品xxx一区| 欧美一二三视频| 久久香蕉频线观| 深夜成人在线观看| 欧美老女人在线视频| 成人在线一区二区| 午夜精品久久久久久99热| 成人a在线观看| 欧美性生活大片免费观看网址| 国产成人在线视频| 亚洲第一区中文字幕| 亚洲免费高清视频| 伊人青青综合网站| 国产日韩欧美另类| 欧美激情精品久久久久久蜜臀| 欧美大荫蒂xxx| 国产经典一区二区| 在线看国产精品| 国产z一区二区三区| 欧美激情久久久久久| 最近中文字幕mv在线一区二区三区四区| 亚洲第一天堂无码专区| 精品女厕一区二区三区| 欧美怡红院视频一区二区三区| 91精品国产高清自在线| 亚洲va欧美va在线观看| 久久久亚洲福利精品午夜| 精品久久久久久中文字幕一区奶水| 欧美日韩精品在线播放| 色综合久久久久久中文网| 欧美亚洲视频在线看网址| 久久精品国产96久久久香蕉| 久久视频这里只有精品| 国产精品日韩久久久久| 国产成人精品a视频一区www| 精品国产精品三级精品av网址| 狠狠久久五月精品中文字幕| 国产999在线观看| 国产精品久久久久一区二区| 国产精品成人播放| xxx成人少妇69| 国产精品视频中文字幕91| 91免费看片网站| 欧美巨猛xxxx猛交黑人97人| 国产日韩欧美成人| 日韩精品黄色网| www.日韩.com| 91久久精品国产91久久性色| 国产日韩综合一区二区性色av| 久久精品国产欧美亚洲人人爽| 国产精品自产拍在线观看| 精品亚洲国产视频| 亚洲精品大尺度| 精品久久久久久久久久久久| 91免费看国产| 国产suv精品一区二区三区88区| 久久久久久噜噜噜久久久精品| 黑丝美女久久久| 狠狠久久五月精品中文字幕| 日韩av片电影专区|