Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

WinDbg

帖子发起人: lzh   发起时间: 2007-03-04 11:42 上午   回复: 6

Print Search
帖子排序:    
   2007-03-04, 11:42 上午
csdnlzh@hotmail.com 离线,最后访问时间: 2008/6/29 11:12:38 lzh

发帖数前50位
注册: 2006-08-28
发 贴: 20
使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote

我们的程序COM+部分出了问题,我用adplus -carsh 抓了dump 文件进行分析。

对windbg 不熟悉,有几个地方不明白,请教一下。

1.出现错误后,抓取的dump文件会有好多个。例如

PID-324__DLLHOST.EXE_Genersoft_BSCW__1st_chance_AccessViolation__mini_0440_2007-04-02_15-47-45-812_0144.dmp

PID-324__DLLHOST.EXE_Genersoft_BSCW__1st_chance_AccessViolation__mini_0440_2007-04-02_15-48-20-687_0144.dmp

PID-324__DLLHOST.EXE_Genersoft_BSCW__1st_chance_AccessViolation__mini_0440_2007-04-02_15-48-31-875_0144.dmp

。。。。。

我不明白 : 抓取的这些dump文件的个数是有什么决定的?

                 这些文件产生的先后顺序对我来说意味着什么?这些dump 文件之间有什么关系呢 ? 我觉得弄明白这个很重要,这决定了我分析的时候是全部分析呢,还是分析具体的某几个

2.程序里有些组件是用delphi写的,我把map文件转换为了dbg文件。

我打开!sym noisy 后发现了一些这样的信息

image header does not match memory image header.

Couldn't map image from disk

Partial symbol image load missing image info

这些dump 文件都是从别的服务器上抓的。那为什么还要根我机器上的那些文件有联系呢。

幸好我的机器上也安装了那套程序,不然的话,那些调试符号就加载不进来。

我不知道这是怎么回事.

windbg 用到的调试符号不是由产生dump时进程中的dll的版本决定的吗,跟我分析dump文件用的机器还有什么关系吗?


IP 地址: 已记录   报告
   2007-03-05, 13:09 下午
tudouni 离线,最后访问时间: 2012/11/8 12:04:22 土豆泥

发帖数前25位
注册: 2006-04-07
发 贴: 59
Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote

对于问题1,你将Adplus运行在了所谓的崩溃模式(Crash Mode),这实际上会将一个调试器CDB附加到要监视的进程。这个调试器会监视包括除零、非法访问等结构化异常。因为调试器总是先于应用程序得到异常处理机会,所以不管你的应用程序是否捕捉了这些异常,CDB都会先得到机会,并写一个dump文件。而且一旦有调试器,那么它会默认处理异常的第二轮处理机会,但这个处理实际上并没有解决问题。所以异常还会发生,如此循环不断。通常没有调试器时,不会进入第二轮异常分发应用程序就会被关闭。

文件名中的AccessViolation表示这是因为发生了Access Violation (访问违例,非常普遍的异常)异常而写的dump。__1st_chance_表示是在异常的第一轮处理机会时写的dump。

因此,以上这么多dump文件很可能是重复的,也就是描述的都是一个异常。所以,你分析哪个关系都不是很大,通常可以分析最早发生的一个。

对于问题2,第一,WinDbg不仅需要符号文件,还需要可执行文件(DLL等)。第二,每个符号文件都有自己的时间戳和Age属性,你自己转化出来的很可能与要求的不匹配。


IP 地址: 已记录   报告
   2007-03-05, 15:18 下午
csdnlzh@hotmail.com 离线,最后访问时间: 2008/6/29 11:12:38 lzh

发帖数前50位
注册: 2006-08-28
发 贴: 20
Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote
谢谢您的解答,有个地方还是不太明白,麻烦您再解释一下好吗
您说的这个:
“而且一旦有调试器,那么它会默认处理异常的第二轮处理机会,但这个处理实际上并没有解决问题。所以异常还会发生,如此循环不断。”
我这样理解:
调试器收到异常通知后,开始写dump文件,这样的话,被调试的进程应该不继续执行了吧。
写完后是不是调试器通知被调试的进程,使其继续执行?这样由于错误,还会产生异常,您是这个意思吗?
那第二次异常都被调试器处理了,最后进程是怎么退出的呢?
IP 地址: 已记录   报告
   2007-03-05, 15:47 下午
csdnlzh@hotmail.com 离线,最后访问时间: 2008/6/29 11:12:38 lzh

发帖数前50位
注册: 2006-08-28
发 贴: 20
Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote
还有个问题:
您说的 “WinDbg不仅需要符号文件,还需要可执行文件”
我在服务器上抓的dump 。服务器是windows2003.
我自己的机器是windowxp.那样的话我的机器上还需要windows2003的那些ntdll,kernel.
不会吧
IP 地址: 已记录   报告
   2007-03-06, 22:04 下午
tudouni 离线,最后访问时间: 2012/11/8 12:04:22 土豆泥

发帖数前25位
注册: 2006-04-07
发 贴: 59
Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote
对于Windows的模块,或者说微软的模块,符号服务器上包含了这些模块的映像。你观察一下你本地的符号目录,就可以看到这一点。举例来说,对NTOSKRNL.EXE通常会有以下三个子目录:

ntoskrnl.dbg

ntoskrnl.exe

ntoskrnl.pdb

其中ntoskrnl.exe目录下还有很多子目录每个目录下都存放着一个ntoskrnl.exe(不同版本)。

WinDbg在很多时候都需要可执行文件,比如返汇编。


IP 地址: 已记录   报告
   2007-03-06, 22:22 下午
tudouni 离线,最后访问时间: 2012/11/8 12:04:22 土豆泥

发帖数前25位
注册: 2006-04-07
发 贴: 59
Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote

对于第一轮异常,CDB/ADPLUS写完dump后,返回给系统FALSE,意思是让系统继续搜索异常处理器(catch或__except等)。这时如果代码中有异常处理器而且处理了异常,那么分发结束,如果没有异常处理器,那么如果系统不在调试,那么缺省的异常处理器就会终止程序,如果在调试,那么却省的调试处理器会返回EXCEPTION_CONTINUE_SEARCH给系统,引发第二轮分发。对于第二轮,调试器仍然先得到处理机会,但是这次调试器会返回TRUE,意思是我“处理”了,回到原位置继续执行。回到原来位置多数会再发生异常,因为异常条件并没有真正消除。

对于有调试器的情况,系统是假设有调试工程师坐在旁边的,他/她了解以上情况,可以采取措施,选择终止以上循环,或者采用其它办法跳出循环,比如把EIP指针调整到新的位置——要视具体情况了。


IP 地址: 已记录   报告
   2007-03-07, 08:45 上午
csdnlzh@hotmail.com 离线,最后访问时间: 2008/6/29 11:12:38 lzh

发帖数前50位
注册: 2006-08-28
发 贴: 20
Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。
Reply Quote

我明白了,谢谢您的详细的解答。谢谢您了。

 


IP 地址: 已记录   报告
高端调试 » 软件调试 » WinDbg » Re: 使用adplus -crash ,有两个基本的问题不明白,请帮忙解答一下。

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.