NTSD(Command Line)調(diào)試DMP格式文件
前言:之前介紹了利用VS2005進行Dump文件的調(diào)試,功能非常強大。但VS2005是一個大程序,本文將討論利用NTSD的Command Line 實現(xiàn)Dump 文件的調(diào)試。
1、 載入DMP格式文件
利用CMD打開命令行窗口,切換到NTSD所在目錄。利用命令載入DMP文件:
ntsd –z dumpfileName –y symbolPath –srcpath sourcecodePath
dumpfileName:DMP格式文件路徑
symbolPath:PDB文件路徑
sourcecodePath:程序的源代碼路徑
如圖1.1,若載入成功,將彈出一個NTSD窗口,如圖1.2。
圖1.1 載入DMP格式文件
圖1.2 NTSD界面
紅色的圈中顯示了BUG的原因,函數(shù)IsPrefix 存在錯誤。0x36是錯誤相對于函數(shù)的偏移值。這個錯誤是一個Access Violation的異常,異常地址為00401036。
Note:
l 若路徑中存在空格,需要用在路徑前后加上引號。
l 若提示錯誤,根據(jù)提示查看是否由于dbghelp.dll不存在導(dǎo)致,安裝的調(diào)試工具包中存在該動態(tài)庫。
2、 定位與源代碼
利用如下命令可以定位錯誤到源代碼中:
lsp –a 500
lsa .
第一行命令用于設(shè)置顯示的源代碼行數(shù),第二行命令將錯誤定位與錯誤行。如圖:
圖1.3 Analysis Result: Line of Source Code Causing Crash
從圖中可以看出,第13號是導(dǎo)致程序錯誤的位置。如果希望看到變量的值,使用命令:
x
若需要詳細查看某個變量的值,使用命令:
?? variableName
圖1.4 Analysis Result: Value of Variable Causing Crash
Module Address of Your Application(顯示程序模塊地址)
Command:
x *!
圖1.5 Application Module Information
It shows all the module address in your application.
Crash Stack Trace(顯示程序調(diào)用堆棧)
If you want to trace the stack of application, use this command:
Command:
kb
圖1.6 Application Stack Trace
It shows that function main invokes function IsPrefix then application crashes.
For more commands of NTSD, refer to debugger.chm in Microsoft Debugger Tools package.
posted on 2009-10-21 18:56 肥仔 閱讀(927) 評論(0) 編輯 收藏 引用 所屬分類: 調(diào)試