日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
面向.Net程序員的dump分析

背景

利辛ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

Dump文件是進(jìn)程的內(nèi)存鏡像??梢园殉绦虻膱?zhí)行狀態(tài)通過(guò)調(diào)試器保存到dump文件中。在 Windows 系統(tǒng)上, dump 文件分為內(nèi)核 dump 和用戶(hù)態(tài) dump 兩種。前者一般用來(lái)分析內(nèi)核相關(guān)的問(wèn)題,比如驅(qū)動(dòng)程序;后者一般用來(lái)分析用戶(hù)態(tài)程序的問(wèn)題。

一般的程序員可能接觸不到dump文件,反而是運(yùn)維會(huì)用的多一些。不過(guò)如果你抗戰(zhàn)在***線(xiàn),學(xué)會(huì)dump的分析無(wú)疑是掌握一柄利器。因?yàn)楹芏鄨?chǎng)景下,在線(xiàn)下的單元測(cè)試或者性能測(cè)試中由于測(cè)試用例的不充分或者生產(chǎn)與測(cè)試環(huán)境的硬件以及pv量級(jí)的不同等等情況導(dǎo)致問(wèn)題暴露不出,而在生產(chǎn)環(huán)境中又沒(méi)有足夠的日志或者堆棧信息來(lái)指向問(wèn)題產(chǎn)生的原因。這個(gè)時(shí)候dump文件的分析就顯得很有作用。

正文分3節(jié) 抓取dump以及dump的手動(dòng)和自動(dòng)分析。對(duì)于初學(xué)者自動(dòng)分析dump是很方便的一種渠道。


一. 抓取dump

1. 最簡(jiǎn)單的方法 通過(guò)任務(wù)管理器

2. 通過(guò)debugdiag

debugdiag是一個(gè)微軟提供的dump抓取和分析工具??梢越⒏鞣N規(guī)則在不同的條件下抓取dump,同時(shí)具有強(qiáng)大的dump分析功能。

下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=26798

3. Adplus方式

運(yùn)行 cmd ,進(jìn)入 adplus.exe 文件所在目錄,運(yùn)行如下命令:

單個(gè)進(jìn)程: adplus .exe – hang – p – o d: ¥

多個(gè)進(jìn)程: adplus .exe – hang – p -p – o d: ¥

Mini Dump : adplus .exe - MiniOnSecond – hang – p – o d: ¥ 

抓取方式的選擇:

任務(wù)管理器的抓取適合dump文件不大,對(duì)應(yīng)系統(tǒng)盤(pán)默認(rèn)存放路徑的空間完全足夠的情況。

debugdiag的抓取可以適應(yīng)多種情況,通過(guò)工具的配置來(lái)完成。

Adplus解決了任務(wù)管理器抓取方式的限制,可以處理對(duì)應(yīng)多個(gè)進(jìn)程大文件的情況。

#p#

 二. dump的手動(dòng)分析

工具: winbdg

WinDBG不是專(zhuān)門(mén)用于調(diào)試.Net程序的工具,它更偏向于底層,可用于內(nèi)核和驅(qū)動(dòng)調(diào)試。進(jìn)行普通的.Net程序調(diào)試還是使用微軟專(zhuān)為.Net開(kāi)發(fā)的調(diào)試工具M(jìn)DBG更方便一些。但是WinDBG能看到更多的底層信息,對(duì)于某些特別疑難的問(wèn)題調(diào)試有所幫助,例如內(nèi)存泄漏等問(wèn)題。

測(cè)試代碼下載 : MyDumpTest.7z

首先添加設(shè)定符號(hào)文件路徑(Symbol Path),當(dāng)你使用Visual Studio編譯程序時(shí),是否有留意到在bin/Debug文件夾下會(huì)有.pdb后綴的文件?這些文件包含有dll程序集的調(diào)試符號(hào),pdb文件并不包含有執(zhí)行代碼,只是使調(diào)試工具能把代碼執(zhí)行指令翻譯為正確的可識(shí)別字符。微軟提供了包含大量pdb文件的公共服務(wù)器,地址如下:http://msdl.microsoft.com/download/symbols。打開(kāi)windbg程序,選擇“File->Symbol File Path…“,把下面的內(nèi)容復(fù)制進(jìn)去保存。srv*d:\debug\symbols*http://msdl.microsoft.com/download/symbols。

下面這行命令 如果你發(fā)現(xiàn)出現(xiàn)Unable to verify checksum...或者的消息 那是因?yàn)槟銢](méi)有添加.net的sos擴(kuò)展或者sos的版本沒(méi)有對(duì)應(yīng)上。.Net1.1時(shí)代的SOS擴(kuò)展已經(jīng)自帶于下載安裝的WinDBG中,從.Net2.0以后,SOS擴(kuò)展已經(jīng)自帶到.Net框架中:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll,為了不至于引起混淆,***的方法就是使用前面的loadby調(diào)試器元命令來(lái)讓W(xué)inDBG自己決定加載什么版本的SOS。

添加sos:.load C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\sos.dll。

加載SOS后,使用命令.chain來(lái)查看調(diào)試鏈中是否已經(jīng)成功包含SOS擴(kuò)展。

通過(guò)!eeversion查看sos的版本號(hào)。

實(shí)戰(zhàn)命令: ~ 查看線(xiàn)程

這表明當(dāng)前dump里記錄的線(xiàn)程數(shù)。如果要切換線(xiàn)程,用波浪線(xiàn)+序號(hào)+s來(lái)切換,如切換到線(xiàn)程2,那么用~2s即可。

lm 查看你加載的模塊

kb 查看native code調(diào)用棧

用~現(xiàn)在只有線(xiàn)程信息,對(duì)于每個(gè)線(xiàn)程,在被抓的那一刻,在執(zhí)行什么,我們有命令:kb。

看到clr大家應(yīng)該很眼熟吧。這里已經(jīng)可以看到較詳細(xì)的調(diào)試信息了。

!runaway    (查看線(xiàn)程對(duì)應(yīng) CPU 運(yùn)行時(shí)間)

因?yàn)槲覀兊臏y(cè)試程序是測(cè)試的是線(xiàn)程阻塞所以我們選一個(gè)運(yùn)行時(shí)間為0的,例如415

!dso 查看這個(gè)堆棧中的對(duì)象

!clrstack 查看這個(gè)線(xiàn)程的托管代碼調(diào)用棧

通過(guò)上面我們已經(jīng)可以看出這個(gè)線(xiàn)程一直都是處于阻塞狀態(tài)。

到這里基本上一個(gè)小的測(cè)試程序可以告一段落了,當(dāng)然windbg的功能遠(yuǎn)遠(yuǎn)不止如此,這里分享一些資源給大家。

資源下載 : WinDbg入門(mén).rar  Windbg用法詳解.7z

#p#

 三. dump的自動(dòng)分析

1. debugdiag

這里有幾種規(guī)則類(lèi)型的選擇,一般我們常用的用crash來(lái)查看鎖和堵塞的情況,performance來(lái)檢查性能的問(wèn)題。

選擇完成后直接點(diǎn)擊開(kāi)始分析

生成報(bào)表

查看描述

點(diǎn)擊詳細(xì)

這樣,紅色字體就是問(wèn)題的所在。然后根據(jù)具體問(wèn)題下發(fā)到對(duì)應(yīng)開(kāi)發(fā)部門(mén)解決。

2. Hang自動(dòng)化分析

在WinDbg輸入如下命令

.shell -ci "~* kb;.echo MANAGED THREADS;!threads;.echo MANAGED CALLSTACKS;~* e !clrstack;" D:\xx.exe


本篇先到此 希望對(duì)大家有幫助

本文來(lái)自:http://www.cnblogs.com/dubing/p/3878591.html


分享名稱(chēng):面向.Net程序員的dump分析
鏈接分享:http://www.5511xx.com/article/dpsojis.html