TC官方合作论坛

标题: 高级难题,千年一遇 [打印本页]

作者: 回头是岸    时间: 2014-6-24 10:05
标题: 高级难题,千年一遇
本帖最后由 回头是岸 于 2014-6-24 19:59 编辑

近日,发现一个疑难杂症 -->   在挂机一段时间后,大漠自动解绑窗口?  

百思不得其解?  

别说要看代码,5 6 千行你要看吗?

在绑定窗口后,执行一个空循环,并没有发生自动解绑的情况。(在此可以排除绑定模式和方法问题)

就是在挂机的时候,几乎在半小时内发生自动解绑情况

那么我是如何确定窗口发生自动解绑情况的呢?   

因为坐标一直识别失败, 我就在识别失败后用 dm.GetBindWindow()  该函数获取对象所绑定的窗口句柄,返回结果为  0  也就是没有绑定窗口

然而脚本全程没写过任何的解绑代码,整个脚本,完全没有出现过以下两个函数,


dm.ForceUnBindWindow()
dm.UnBindWindow()


经过排除,窗口自动解绑后,窗口的句柄并没有发生改变,(也排除了,窗口句柄变化了,从而导致绑定失败的可能)

问过一些写该游戏脚本的朋友,他的脚本有没有发生大漠自动解绑的情况,结果是没有。(也排除了游戏的问题)

也曾经怀疑是定时释放内存问题而导致自动解绑,经测试,也排除了次可能。

曾经,将代码分段测试,分段测试好像都没发生自动解绑,整体测试又发生自动解绑。瞬间感觉这问题没法下手了。

现在除了假设是系统问题,我再也不能够想象出来,导致自动解绑的可能性。

在崩溃前,期望获得各位指点..............................................


直觉告诉我这不是触发行性的错误,也就是说并不是一执行到某代码,窗口里面解绑了。
而是隐式性错误,就是说自动解绑这问题,是在执行某段代码的第 10 次 或者 第 50 次 或者 第 80 次,才导致自动解绑。
要排查这些错误感觉,非常高难。除了管理员建议的,写出日志来排查,好像并无其他良方。



作者: z878717691    时间: 2014-6-24 13:35
你看看是不是你绑定窗口的那个线程结束了,结束了就会自动解绑
作者: 回头是岸    时间: 2014-6-24 14:33
z878717691 发表于 2014-6-24 13:35
你看看是不是你绑定窗口的那个线程结束了,结束了就会自动解绑

没有结束,他能一直输出,空的坐标。但由于自动解绑了识别不到坐标。
作者: q273814    时间: 2014-6-24 15:20
我不看代码 也不看问题
作者: 小小狼    时间: 2014-6-24 15:30
高级难题,千年一遇
别说要看代码,5 6 千行你要看吗?

刚学Tc没几天,注册个马甲进来一看,就雷倒我了,
这么牛B的口气. 这么弱智的问题,居然还千年一遇.人才啊
看你这么牛叉的份了,劳资特么的就不说问题出在哪.你来咬我啊?
用激将来试试,看哥忍得住不?
作者: cylhb    时间: 2014-6-24 15:47
分段测试好像都没发生自动解绑,整体测试又发生自动解绑
-.-多窗口对个dm对象么?会不会哪里对象混淆了。。
作者: 回头是岸    时间: 2014-6-24 15:58
本帖最后由 回头是岸 于 2014-6-24 15:59 编辑
cylhb 发表于 2014-6-24 15:47
分段测试好像都没发生自动解绑,整体测试又发生自动解绑
-.-多窗口对个dm对象么?会不会哪里对象混淆了。。 ...

我测试的是一个窗口,而这个窗口,有两条线程,这两条线程,都有分别绑定,一个主绑定,一个副绑定
副绑定在,主绑定成功后,再进行绑定的,这两条线程都各自绑定窗口,各自创建大漠对象,且名称不重复。
作者: 回头是岸    时间: 2014-6-24 16:05
也曾经关闭一条线程,来测试,问题依旧发生。
作者: z878717691    时间: 2014-6-24 17:08
关闭一个线程还是,问题出在另外一个上面。你等解绑后,看看那个创建的对象还存在不喃?插件bug应该不可能吧,只有你一个人出现了。
作者: z878717691    时间: 2014-6-24 17:11
实在不行,只有屏蔽一些代码,看看在那些代码中会出现解绑了。
作者: 88979825    时间: 2014-6-24 17:30
选C·········
作者: 续花丶    时间: 2014-6-24 18:56
才半个小时发生一次,自己盯着屏幕看。  相信自己写的  脚本运行到什么位置 自己能看出来吧。然后 追过去检查代码。
作者: 回头是岸    时间: 2014-6-24 19:13
续花丶 发表于 2014-6-24 18:56
才半个小时发生一次,自己盯着屏幕看。  相信自己写的  脚本运行到什么位置 自己能看出来吧。然后 追过去检 ...

我倒愿如你说的轻松。
作者: qq253028918    时间: 2014-6-25 01:42
我也觉得应该叮着游戏运行,看它运行到哪了会出现这问题.,然后对那一段代码进行检查




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1