NTSD(Command Line)调试DMP格式文件
2009-07-15 15:11
381 查看
前言:之前介绍了利用VS2005进行Dump文件的调试,功能非常强大。但VS2005是一个大程序,本文将讨论利用NTSD的Command Line 实现Dump 文件的调试。
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的原因,函数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
图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(显示程序调用堆栈)
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.
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的原因,函数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
图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(显示程序调用堆栈)
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.
相关文章推荐
- NTSD(Command Line)调试DMP格式文件
- NTSD(Command Line)调试DMP格式文件
- 《The Linux Command Line》 读书笔记03 ls命令与长格式输出解释 文件权限
- WinDbg调试DMP格式文件
- WinDbg调试DMP格式文件
- WinDbg调试DMP格式文件
- WinDbg调试DMP格式文件
- WinDbg调试DMP格式文件
- WinDbg调试DMP格式文件
- 使用Command Line下载文件
- 多线程与调试 (FreePlane的mm格式文件导出)
- The Linux Command Line 读书笔记(三)操作文件和目录
- linux调试----addr2line将(转换为地址及所在的文件及行数)
- ubuntu中用命令行把文件移到回收站 move files to trash from command line
- vs2010下使用dmp文件和pdb文件调试时dump、exe和pdb三个文件要保持版本一致的原因
- 运行期修改可执行文件的路径和Command Line
- PE文件格式分析系列(文章1)----一个PE文件导入表数据的分析(MFC工程调试版)
- 在Visual Studio 2010中指定命令行调试参数(Specify Command Line Arguments in Visual Studio 2010)
- VS调试时JSON格式文件加载不了
- Linux C++ 调试神技--如何将Linux C++ 可执行文件逆向工程到Intel格式汇编