Windows程序调试--创建映射文件
2008-10-28 08:57
309 查看
创建映射文件
做事后调试需要一个对应于程序创建的所有模块的映射文件。
映射文件包含对应模块的最佳装载地址、段表、输出符号地址、静态符号地址以及程序代码地址和源程序行号的映射。
为你的程序创建映射文件,你必须对Visual C++工程中的相应选项作适当的设置。第一步是打开映射文件生成功能、你可以在工程设置对话框里进行设置,在Link标签里的Debug类里打开Generate mapfile选项。由于一些奇怪的原因,Visual c++没有把输出程序的代码地址和源代码行号里的映射作为默认设置。要得到这些信息,还需要在Project Options对话框里键入“/MAPINFO:LINES”。得到引出序号(exorpt ordinal)也许很有用,所以在Project Object对话框末尾里也要键入“/MAPINFO:EXPORTS”。
如果程序在一个非常低的地址上崩溃,或奇怪的地址,显然没有任何合法指令。原因可能为:
l 代码试图用一个非法函数指针调用函数
l 在调用者和实际函数之间存在原型不匹配
l 堆栈已经被破坏了,通常是局部变量的一处导致的函数返回地址被破坏掉了
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
前两种情况,函数调用已经失败,被调用函数也就没有机会将堆栈基址指针、局部变量以及保存寄存器压入堆栈,意味着函数返回地址刚好就在堆栈顶,很容易退回到源代码。
如果为堆栈破坏,返回地址本身被覆盖的数据修改了,可能会给一些提示,如,如果指针地址看起来像4个ANSI字符(如地址0x73677562,代表ANSI的“bugs”),就可能是被一个局部字符串给覆盖了;
在windows里发生崩溃几乎可以肯定是你代码中的错误导致的,然而,驱动程序中的崩溃极有可能就是驱动程序自身的错误
做事后调试需要一个对应于程序创建的所有模块的映射文件。
映射文件包含对应模块的最佳装载地址、段表、输出符号地址、静态符号地址以及程序代码地址和源程序行号的映射。
为你的程序创建映射文件,你必须对Visual C++工程中的相应选项作适当的设置。第一步是打开映射文件生成功能、你可以在工程设置对话框里进行设置,在Link标签里的Debug类里打开Generate mapfile选项。由于一些奇怪的原因,Visual c++没有把输出程序的代码地址和源代码行号里的映射作为默认设置。要得到这些信息,还需要在Project Options对话框里键入“/MAPINFO:LINES”。得到引出序号(exorpt ordinal)也许很有用,所以在Project Object对话框末尾里也要键入“/MAPINFO:EXPORTS”。
如果程序在一个非常低的地址上崩溃,或奇怪的地址,显然没有任何合法指令。原因可能为:
l 代码试图用一个非法函数指针调用函数
l 在调用者和实际函数之间存在原型不匹配
l 堆栈已经被破坏了,通常是局部变量的一处导致的函数返回地址被破坏掉了
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
前两种情况,函数调用已经失败,被调用函数也就没有机会将堆栈基址指针、局部变量以及保存寄存器压入堆栈,意味着函数返回地址刚好就在堆栈顶,很容易退回到源代码。
如果为堆栈破坏,返回地址本身被覆盖的数据修改了,可能会给一些提示,如,如果指针地址看起来像4个ANSI字符(如地址0x73677562,代表ANSI的“bugs”),就可能是被一个局部字符串给覆盖了;
在windows里发生崩溃几乎可以肯定是你代码中的错误导致的,然而,驱动程序中的崩溃极有可能就是驱动程序自身的错误
相关文章推荐
- 2013 Mac Air 装Win7双系统问题-安装程序无法创建新的分区,也无法定位系统 & Windows无法安装所需的文件,错误代码0x80070570
- C# vs2008 创建Windows服务程序,打包成安装文件
- VS2005为Windows移动程序创建安装文件(转载)
- C++创建和解析Windows快捷方式文件lnk的程序
- C++程序调试输出并写入文件(Linux/Windows)
- 包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
- VS2005为Windows移动程序创建安装文件
- C# vs2008 创建Windows服务程序,打包成安装文件
- VS2005为Windows移动程序创建安装文件
- windows调试 -- 创建.dump文件
- vs2013创建、安装、调试Windows Service程序
- .net Windows服务程序和安装程序制作图解 及 VS 2010创建、安装、调试 windows服务(windows service)
- VS2005为Windows移动程序创建安装文件(转载)
- VS2005为Windows移动程序创建安装文件
- Windows调试技术-创建MiniDump文件
- C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib,该怎么解决
- VS2005为Windows移动程序创建安装文件
- Windows 服务程序 配置文件路径问题
- 在windows环境下用python编写备份文件小程序
- C++程序崩溃时,生成dmp调试文件