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

posts - 126,  comments - 73,  trackbacks - 0

寫(xiě)程序的人都有這個(gè)苦惱,用戶說(shuō)你的程序總有時(shí)會(huì)莫名奇妙的崩潰,可是你怎么也無(wú)法重現(xiàn)崩潰的場(chǎng)景,所以也無(wú)法找出程序中的Bug,難道就束手無(wú)策嗎?
??? 前幾天在一本雜志(《程序員-游戲創(chuàng)造》)上看到一篇關(guān)于這個(gè)主題的文章,非常詳細(xì)的論述了怎樣通過(guò)代碼和工具實(shí)現(xiàn)Bug Report,使得你可以快速定位崩潰的源代碼行數(shù)。
?
??? 要catch未處理的異常,該文中論述了使用全局的try-catch的優(yōu)缺點(diǎn),全局的try-catch導(dǎo)致了調(diào)試工作的麻煩,不可取。Win32異常的可以通過(guò)設(shè)置過(guò)濾函數(shù)SetUnhandledExceptionFilter來(lái)處理,而C++也有set_terminate函數(shù)可以設(shè)置一個(gè)函數(shù)來(lái)處理任何未catch的異常。
?
?? 文章還告訴我們,main/WinMain是程序的入口處,但靜態(tài)初始化在這之前進(jìn)行,操作系統(tǒng)裝載我們的程序后,先調(diào)用的是CRT提供函數(shù)WinMainCRTStartup/mainCRTStartup,可以通過(guò)VC開(kāi)發(fā)工具設(shè)置程序的入口函數(shù)來(lái)獲取異常的優(yōu)先控制權(quán)(/ENTRY:函數(shù))(Linker->Advanced->Entry Point)。
??? 1.用minidump進(jìn)行調(diào)試
??? 這個(gè)技術(shù)是改進(jìn)Windows操作系統(tǒng)的錯(cuò)誤報(bào)告機(jī)制的關(guān)鍵。產(chǎn)生的文件非常小,適合于網(wǎng)絡(luò)傳輸。???? 有三種方法創(chuàng)建一個(gè)minidump文件:???? a. 在你的應(yīng)用程序中加入未處理的exception處理函數(shù),函數(shù)中創(chuàng)建minidump文件???? b. Visual Studio .NET集成開(kāi)發(fā)環(huán)境中調(diào)試時(shí),Debug菜單中按Save Dump???? c. Windows XP 在一個(gè)程序遇到未處理的異常時(shí)會(huì)自動(dòng)產(chǎn)生minidump文件,但直接提交給微軟,你沒(méi)機(jī)會(huì)處理。
??? 要使用該技術(shù),build的時(shí)候要生成完全的調(diào)試信息文件(PDB),發(fā)布每個(gè)版本時(shí)要保存每個(gè)可執(zhí)行文件(exe/dll)以及相對(duì)應(yīng)的pdb文件,以備將來(lái)debug用。為了更好的輔助文件匹配,注意要正確設(shè)置每個(gè)可執(zhí)行文件的內(nèi)部版本號(hào),每次發(fā)布要使用不同的版本號(hào),然而debugger使用的是PE文件頭中內(nèi)部時(shí)間蹉來(lái)匹配的。在發(fā)布版本中生成調(diào)試信息有副作用,占用更多空間并且容易被逆向工程。
??? 寫(xiě)minidump的API是MiniDumpWriteDump,在PlatformSDK中的DBGHelp.dll,只有XP版本的沒(méi)有問(wèn)題。為了調(diào)用這個(gè)API,你必須使用SetUnhandledExceptionFilter API來(lái)設(shè)置一個(gè)未處理異常處理器,用來(lái)catch崩潰,但在VS2005之前,仍然會(huì)無(wú)法catch純C++異常。
??? 在你的函數(shù)中,注意要導(dǎo)入正確的DbgHelp.dll,使用LoadLibrary會(huì)默認(rèn)載入System32目錄下的dll,Win2000將會(huì)導(dǎo)致錯(cuò)誤。
??? 分析用戶傳回的minidump文件,使用Visual Studio .Net打開(kāi)(*.dmp,*.mdmp)并創(chuàng)建缺省的項(xiàng)目。按F5在Output窗口中顯示載入的模塊信息。重建所有進(jìn)程狀態(tài),但可能缺少symbols以及調(diào)試信息。所以你需要所有匹配的exe和dll文件以及pdb文件,要查看所有的module打開(kāi)Modules窗口,找出所有(通常沒(méi)必要所有)匹配的dll(DLL Help database: http://support.microsoft.com/servicedesks/fileversion/dllinfo.asp.),或者你需要操作系統(tǒng)的安裝盤或者從報(bào)告者的系統(tǒng)中得到所有匹配的dll,拷貝到本地的一個(gè)目錄下,例如D:\Mudules。然后設(shè)置項(xiàng)目的Debugging頁(yè)中的Command參數(shù)為MODPATH=D:\Mudules,按F5重新載入minidump。注意你也需要每個(gè)dll匹配的pdb文件,平臺(tái)的可以在操作系統(tǒng)安裝盤或者
http://www.microsoft.com/ddk/debugging中找到。
?Operating system? Files required? Windows NT 4???????? DBGs? Windows 2000???????? DBGs, PDBs? Windows XP??????????? PDBs?????? 如果你要處理很多minidumps,可能需要所有的dll和pdb/dbg,這時(shí)你可以使用Symbol Server來(lái)管理所有資源,首先到
http://www.microsoft.com/ddk/debugging/symbols.asp下載調(diào)試工具,拷貝Symsrv.dll到VS.Net可以訪問(wèn)的地方,建一個(gè)本地目錄,例如:C:\localstore,在項(xiàng)目屬性對(duì)話框中設(shè)置Debugging頁(yè)中Symbol路徑為SRV*c:/localstore*http://msdl.microsoft.com/download/symbols。此后,每次F5后就會(huì)自動(dòng)下載必要的文件。
??? 原文:http://www.codeproject.com/debug/postmortemdebug_standalone1.asp???? 例子:http://www.codeproject.com/debug/crash_report.asp
??? 2. map文件???? 生成map文件來(lái)定位崩潰的代碼行???? 原文:http://www.codeproject.com/debug/mapfile.asp???????? 3. CrashFinder
??? John Robbins 寫(xiě)好的CrashFinder能夠發(fā)現(xiàn)VC++/VB的應(yīng)用程序的崩潰處(代碼行)。Release版本也要生成Debug信息,在VC中使用/Zi 編譯選項(xiàng)(C/C++ tab中Program Database )和/DEBUG and /PDB:<pdb filename>鏈接選項(xiàng)(Link tab中打勾Debug info 并選擇Microsoft format),VB中在項(xiàng)目屬性打勾Compile to Native Code 和Create Symbolic Debug Info 選項(xiàng)。
??? 如果你在Debugger的OUtput窗口中看到LDR: Dll xxx base 10000000 relocated due to collision with yyy信息,可以通過(guò)REBASE.EXE(Platform SDK)程序使得你可以重新安排載入dll/ocx地址,因?yàn)椴煌南到y(tǒng)載入dll/ocx的地址不同,如果沖突會(huì)導(dǎo)致你找不出到底是哪個(gè)dll崩潰。
??? 如果是beta版,你可以讓?xiě)?yīng)用程序生成詳細(xì)Dr. Watson 信息(要很大空間不適合傳輸),你可以在安裝應(yīng)用程序時(shí)檢測(cè)系統(tǒng)是否已經(jīng)安裝Dr. Watson(在注冊(cè)表HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows NT\CurrentVersion\AeDebug 處),有了這種信息你可以得到詳細(xì)的堆棧空間并游刃有余地找出崩潰的地方。
??? CrashFinder使用IMAGEHLP.DLL符號(hào)引擎(Windows NT? 4.0首次引入),Windows NT 5.0 SDK已經(jīng)可以處理源碼行號(hào)。(CrashFinder2.1已經(jīng)升級(jí),使用最新的DBGHelp.dll)
??? CrashFinder只保存應(yīng)用程序和調(diào)試信息文件的目錄信息,所以無(wú)需每次編譯都需要CrashFinder連編。你可以創(chuàng)建多個(gè)CrashFinder項(xiàng)目,每個(gè)項(xiàng)目針對(duì)一種操作系統(tǒng)。
??? 原文:http://www.microsoft.com/msj/0498/bugslayer0498.aspx???? 下載:http://www.wintellect.com/about/instructors/robbins/code.aspx
?
??? 解決方案:
??? (To be continue)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=658660

文章出處:飛諾網(wǎng)(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/200876/130580.html

posted on 2010-10-11 09:31 我風(fēng) 閱讀(876) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

文章檔案

相冊(cè)

收藏夾

C++

MyFavorite

搜索

  •  

積分與排名

  • 積分 - 328993
  • 排名 - 75

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产精品热久久| 亚洲国产欧美不卡在线观看| 久久午夜精品| 久久黄色影院| 久久精品伊人| 欧美成人一品| 久久亚洲春色中文字幕| 国产精品青草综合久久久久99| 国产精品黄视频| 国产一区久久| 亚洲激情一区| 亚洲视频中文字幕| 久久久久88色偷偷免费| 欧美11—12娇小xxxx| 亚洲日本乱码在线观看| 亚洲午夜精品久久| 久久国产婷婷国产香蕉| 免费观看一区| 国产精品视频一区二区三区| 狠狠色综合日日| 一区二区三区日韩精品视频| 久久精品国产综合| 亚洲精品1234| 欧美一级免费视频| 欧美激情在线狂野欧美精品| 国产精品无码永久免费888| 亚洲国产精品久久精品怡红院| 亚洲女人av| 91久久精品国产91久久性色tv| 午夜精彩国产免费不卡不顿大片| 欧美福利专区| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲一区在线观看免费观看电影高清 | 欧美激情第4页| 亚洲一区二区三区影院| 欧美成人免费网| 国产日本欧美一区二区三区| 亚洲精品四区| 久久亚洲精品伦理| 亚洲在线视频一区| 欧美精品亚洲精品| 亚洲二区视频| 免费在线成人av| 先锋a资源在线看亚洲| 国产精品v亚洲精品v日韩精品| 最新国产拍偷乱拍精品| 蜜臀99久久精品久久久久久软件| 亚洲欧美一区二区视频| 国产精品久久一区主播| 亚洲网站在线| 一区二区三区欧美激情| 欧美日韩一区综合| 中文在线资源观看视频网站免费不卡| 欧美xart系列在线观看| 久久av一区二区三区漫画| 国产精品一区2区| 亚洲欧美三级在线| 亚洲专区在线| 国产一区二区三区四区hd| 久久精品女人的天堂av| 欧美一级大片在线免费观看| 国产在线不卡视频| 久热精品视频在线| 欧美成人性生活| 农夫在线精品视频免费观看| 久久se精品一区精品二区| 国产精品一区二区视频 | 国产午夜精品久久久| 久久精品免费观看| 欧美在线视屏| 亚洲高清自拍| 亚洲国产精品悠悠久久琪琪| 欧美电影在线播放| 亚洲天堂av在线免费| 亚洲一级电影| 亚洲大胆美女视频| 亚洲精品免费一二三区| 国产精品日韩欧美一区二区| 久久精品在线视频| 欧美aa国产视频| 亚洲男人天堂2024| 久久久久久精| 亚洲免费中文| 可以看av的网站久久看| 亚洲婷婷在线| 玖玖国产精品视频| 午夜欧美大尺度福利影院在线看| 性欧美8khd高清极品| 亚洲激情成人在线| 亚洲专区国产精品| 亚洲日本电影在线| 亚洲一级二级| 亚洲人妖在线| 欧美一区亚洲| 亚洲午夜精品久久久久久app| 欧美一区二区三区视频| 99精品视频网| 久久久精品免费视频| 亚洲最新在线| 久久成人免费日本黄色| 在线视频日韩精品| 久久人人爽爽爽人久久久| 亚洲欧美激情四射在线日| 老色鬼精品视频在线观看播放| 亚洲综合国产精品| 欧美激情国产日韩| 久久综合激情| 国产精品一区久久| 亚洲美女在线一区| 欧美一区二区三区日韩视频| 性做久久久久久久免费看| 一本到12不卡视频在线dvd| 久久久久国产精品一区二区| 亚洲午夜黄色| 欧美激情视频一区二区三区在线播放 | 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲福利视频三区| 欧美日本在线视频| 久久综合99re88久久爱| 欧美性视频网站| 亚洲精品一区二区在线观看| 在线日韩视频| 久久久久久免费| 久久久久久久久一区二区| 国产女主播一区| 亚洲欧美国产不卡| 午夜一区不卡| 国产酒店精品激情| 亚洲免费在线观看视频| 亚洲天堂激情| 国产精品超碰97尤物18| av成人免费| 亚洲午夜在线| 国产精品theporn| 艳妇臀荡乳欲伦亚洲一区| 一本久久a久久免费精品不卡| 欧美大色视频| 99re热精品| 亚洲一区二区在线视频| 国产精品ⅴa在线观看h| 中文在线不卡| 性欧美激情精品| 国产午夜精品一区二区三区视频 | 在线视频中文亚洲| 欧美视频日韩视频在线观看| 夜夜嗨av色一区二区不卡| 亚洲欧美一区二区三区极速播放 | 日韩午夜电影av| 欧美激情一二区| 一区二区三区欧美日韩| 香蕉成人啪国产精品视频综合网| 国产精品实拍| 久久久久五月天| 91久久视频| 亚洲一区bb| 国产曰批免费观看久久久| 久久天堂精品| 日韩网站免费观看| 午夜久久福利| 影音先锋亚洲视频| 欧美激情综合五月色丁香小说 | 久久亚洲精选| 亚洲国产精品va| 亚洲综合电影| 在线观看视频一区| 欧美精选在线| 亚洲欧美日韩在线| 免费看亚洲片| 亚洲自拍高清| 在线日本高清免费不卡| 欧美日韩xxxxx| 久久精品国产免费观看| 亚洲国产三级网| 羞羞色国产精品| 亚洲国产婷婷| 国产热re99久久6国产精品| 欧美成人xxx| 亚洲免费伊人电影在线观看av| 农夫在线精品视频免费观看| 日韩午夜中文字幕| 久久国产精品久久精品国产| 一区二区在线看| 国产精品美女www爽爽爽视频 | 欧美视频在线观看一区| 久久激情一区| 亚洲视频成人| 亚洲国产清纯| 久久久久久久一区二区三区| 99天天综合性| 亚洲国产精品电影| 国产专区欧美专区| 国产精品久久中文| 欧美片在线播放| 免费成人性网站| 久久成人av少妇免费| 亚洲视频狠狠| 亚洲精品美女在线观看播放| 另类天堂av| 欧美在线视频二区| 午夜精品久久久99热福利|