如何用WinDbg或Waston Dump Viewer分析WinCE机台上抓取的Dump File问题

tianweiming9527   2008-11-13 22:32 楼主
    基于ARM+WinCE 5.0的机台上有概率性的发生Data Abort,直接采用加入Debug信息逐步缩小范围的方法太费时间,所以在Image中加入了ErrorReporting的功能。
    机器发生了Data Abort后,将dump file拷贝出来,就是那个后缀名为kdmp的文件。在PC机上使用WinDbg进行分析的时候可以找到发生Data Abort的类型,但是无法在定位出源代码中的位置。
    第一次使用WinDbg工具,很多东西不是很清楚,希望大家在这里讨论一下,在线等待大家的回答。
    只要参与就有分相送,^_^,如果分数不够还可以再加!

回复评论 (33)

顶。
要把对应的.pdb文件放进去的。不然只显示Handle值,没有具体的Thread Name。
点赞  2008-11-14 08:58
没有用过,帮顶

学习这种调试方法
点赞  2008-11-14 09:15
自己顶一下,大家快来抢分呀!!!
点赞  2008-11-14 09:30
我自己顶一下,要不就沉到底了
点赞  2008-11-17 19:29
引用: 引用 1 楼 gsymichael 的回复:
顶。
要把对应的.pdb文件放进去的。不然只显示Handle值,没有具体的Thread Name。


pdb包含symbol信息, 拷贝pdb文件到kdmp同目录.
有PB吗,有的话,打开kdmp, attach上去,然后双击callstack, 就可以看到源码了

至于WinDBG, 没有试过, 关注下
不过你可以试试在File-->Symbol Search Path 和 File-->Source Search Path设置看看
点赞  2008-11-17 20:01
自己加一个SEH捕获一下异常,把crash信息输出,再利用编译器生成的map文件定位崩溃代码区间,我一直这样用感觉不错
点赞  2008-11-17 22:12
没用过,我向来用串口调试
点赞  2008-11-18 08:48
引用: 引用 7 楼 xdkui 的回复:
引用 1 楼 gsymichael 的回复:
顶。
要把对应的.pdb文件放进去的。不然只显示Handle值,没有具体的Thread Name。


pdb包含symbol信息, 拷贝pdb文件到kdmp同目录.
有PB吗,有的话,打开kdmp, attach上去,然后双击callstack, 就可以看到源码了

至于WinDBG, 没有试过, 关注下
不过你可以试试在File-->Symbol Search Path 和 File-->Source Search Path设置看看

谢谢了,呵呵
今天太晚了,明天我试一下。
点赞  2008-11-18 20:57
WinDbg还真没在CE下用过这个东东,一般都是打LOG来DEBUG:)帮顶!
点赞  2008-11-18 21:11
气死人了,什么破eeworld啊,打了长长的一大篇,提交不成功,白打了。晕死!
点赞  2008-12-18 13:42
我再回复一下吧。希望能发上去。[这回学乖了,在编辑器中输好了才Copy过来的]
我在PC机上使用过WinDbg,但不知这种方法是否适用CE系统,LZ帮我验证一下吧,呵呵:
步骤如下
1. 在Release版本中添加调试信息。
2. 在程序中加入ErrorReporting崩溃处理代码,生成崩溃文件。
3. 打开WinDbg,设置好符号路径,然后打开崩溃文件。使用!analyze -v命令来分析崩溃时的情况。
   一般也就是看看崩溃线程的堆栈情况。
   
   注意:在生成崩溃文件时可以指定生成文件的大小,生成的文件越大,包含的调试信息越多,如局部变量的值等等,
   这个可以根据需要进行设置。不知道WinCe系统中是否支持这种设置。
   
   WinDbg的使用方法在安装完毕后有一个帮助文件,看看应该就差不多了,着重要看看它的符号设置方法。
点赞  2008-12-18 13:48
终于发上去了,如果记得把验证的结果回复到这个帖子中来哦:)

俺下个月也要进入WinCE做开发了。呵呵、、
点赞  2008-12-18 13:53
引用: 引用 8 楼 navi_dx 的回复:
自己加一个SEH捕获一下异常,把crash信息输出,再利用编译器生成的map文件定位崩溃代码区间,我一直这样用感觉不错

自己加一个SEH捕获一下异常?这个到底怎么做?我经验尚浅,请前辈明示。
这个帖子不错,一定要顶起来。
点赞  2008-12-18 13:56
引用: 引用 2 楼 91program 的回复:
没有用过,帮顶

学习这种调试方法



同样学习一下,看来高手很多啊!
点赞  2008-12-18 14:14
引用: 引用 14 楼 pilixuanke 的回复:
我再回复一下吧。希望能发上去。[这回学乖了,在编辑器中输好了才Copy过来的]
我在PC机上使用过WinDbg,但不知这种方法是否适用CE系统,LZ帮我验证一下吧,呵呵:
步骤如下
1. 在Release版本中添加调试信息。
2. 在程序中加入ErrorReporting崩溃处理代码,生成崩溃文件。
3. 打开WinDbg,设置好符号路径,然后打开崩溃文件。使用!analyze -v命令来分析崩溃时的情况。
  一般也就是看看崩溃线程的堆栈情况。
  
  …

经验之谈呀,我也觉得是自己没有把符号给整好导致没有办法分析最终的log信息
点赞  2008-12-18 16:08
引用: 引用 11 楼 BEYONDMA 的回复:
WinDbg还真没在CE下用过这个东东,一般都是打LOG来DEBUG:)帮顶!

^_^,我也这么用
点赞  2008-12-18 16:09
引用: 引用 8 楼 navi_dx 的回复:
自己加一个SEH捕获一下异常,把crash信息输出,再利用编译器生成的map文件定位崩溃代码区间,我一直这样用感觉不错

是呀,这样确实是挺简单,也比较方便,我也经常这么用。
最近想找一种更加简单,更加准确的方法,因为代码量比较大的时候,这样做起来就比较复杂了。
^_^,共同学习了,等有了进展就给大家加分,只要参与就有分,分不够可以再加!
点赞  2008-12-18 16:11
引用: 引用 19 楼 guopeixin 的回复:
引用 11 楼 BEYONDMA 的回复:
WinDbg还真没在CE下用过这个东东,一般都是打LOG来DEBUG:)帮顶!

^_^,我也这么用


你现在也没有搞定?
不少人使用:自己加一个SEH捕获一下异常,把crash信息输出,再利用编译器生成的map文件定位崩溃代码区间,我一直这样用感觉不错
的方法。我还没有尝试过呢。
点赞  2008-12-18 16:11
SEH结构化异常处理
看过这样的代码,我也没用过,顶一下。
__try
{
}
__finally
{
}
之类。
点赞  2008-12-18 17:27
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复