今天下午我处理的那两个问题终于有了眉目。
测试中心的那个问题,换了oracle的客户端后,今天一直没有出现那个错误,可以说是基本搞定了,这个需要他们进一步的测试验证。
先反思一下,其实第三天抓的dump就是oracle的客户端的问题了。
但是不敢相信真是这个问题,一直怀疑是自己程序里面的问题,或者是抓的dump有问题。
周二忽然想到是不是客户端跟服务器端不匹配造成的,于是修改了程序。
当时不敢确认是这方面的原因,不光是因为Oracle的东西。还有一个原因就是为什么我们的程序只有在执行那几个查询的时候有问题,别的地方没问题呢。都是一样的客户端啊。。。这个现在也没想明白。。。
只要是程序就有可能有错误,不论是谁做的。
中青旅那个问题。现在发现是Oracle9.2下的一个bug,猜测是这方面的原因。要打了补丁后再验证。里面竟然有个debug 版本的dll.这个bug 不是我发现的。但是我从抓的dump里面分析出里unload 一个dll.而那个dll就是那个debug版本的。
10天啊,这两个问题搞了我10天。虽然不是很痛苦,但绝不痛快,总觉得心里有个事。
没想到今天下午同时有了结果,哈哈。那种快乐的心情很短暂,但绝对过瘾。
忽然很想再享受一次,再给我几个这样的问题吧。哈哈
还有明白了两个基本的问题
1.抓下dump后,分析的时候要有相应的可执行文件exe,dll等。
以前我一直以为只需要调试符号就可以了。你可以看一下符号目录下其实有很多可执行文件的,感觉很无知。这个很重要,我想windbg工作的时候可能是这样一个过程。根据dump文件加载dll文件,然后根据dll文件去加载符号文件。
还有就是即使是同样的程序,不同时间编译的,也是不一样的。PE 文件头里面有个timestamp.
PE 文件的格式还不清楚,有时间看一下。
2.adplus -crash 抓下来的那些dump
是随着程序的执行逐渐产生的不是一下子就产生那么多的
可能最终的原因是一个,但反应到程序里面可能是这个错误导致了别的错误
最终生成多个dump.
这个跟异常处理有关,网上有很详细的介绍。我还没完全看懂。
在这里谢谢http://advdbg.com/default.aspx 里的土豆泥,给了我很多帮助
这个网站是目前我发现的国内唯一一个关于调试技术的网站
那几个人技术觉都很牛,更重要的是人品都很好。
关于调试方面的资料我这里有
COM+ 方面的。是微软给金蝶的工程师培训时的视频,5,6个小时
还有上次去微软的技术支持中心培训的一点PPT,Demo。
如果有需要的可以跟我联系一下,csdnlzh@hotmail.com