NTSD(Command Line)调试DMP格式文件

前言:之前介绍了利用VS2005进行Dump文件的调试,功能非常强大。但VS2005是一个大程序,本文将讨论利用NTSDCommand Line 实现Dump 文件的调试。

1、  载入DMP格式文件

利用CMD打开命令行窗口,切换到NTSD所在目录。利用命令载入DMP文件:

ntsd –z dumpfileName –y symbolPath –srcpath sourcecodePath

dumpfileNameDMP格式文件路径

symbolPathPDB文件路径

sourcecodePath:程序的源代码路径

如图1.1,若载入成功,将弹出一个NTSD窗口,如图1.2

Load

 

 

 

1.1 载入DMP格式文件

NTSD(Command Line)调试DMP格式文件_第1张图片

1.2 NTSD界面

红色的圈中显示了BUG的原因,函数IsPrefix 存在错误。0x36是错误相对于函数的偏移值。这个错误是一个Access Violation的异常,异常地址为00401036

Note

l  若路径中存在空格,需要用在路径前后加上引号。

l  若提示错误,根据提示查看是否由于dbghelp.dll不存在导致,安装的调试工具包中存在该动态库。

2、  定位与源代码

利用如下命令可以定位错误到源代码中:

lsp  –a 500

lsa  .

第一行命令用于设置显示的源代码行数,第二行命令将错误定位与错误行。如图:

1.3 Analysis Result: Line of Source Code Causing Crash

从图中可以看出,第13号是导致程序错误的位置。如果希望看到变量的值,使用命令:

x

若需要详细查看某个变量的值,使用命令:

??  variableName

NTSD(Command Line)调试DMP格式文件_第2张图片

图1.4 Analysis Result: Value of Variable Causing Crash

 

Module Address of Your Application(显示程序模块地址)

Command:

x *!

NTSD(Command Line)调试DMP格式文件_第3张图片

1.5 Application Module Information

It shows all the module address in your application.

 

Crash Stack Trace(显示程序调用堆栈)

If you want to trace the stack of application, use this command:

Command:

kb

NTSD(Command Line)调试DMP格式文件_第4张图片

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.

你可能感兴趣的:(function,Microsoft,command,Module,application,Crash)