项目.多进程SVG_BUG排除
Posted drmess
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目.多进程SVG_BUG排除相关的知识,希望对你有一定的参考价值。
1、现在(20180910) 还是有Bug存在(有一段时间没弄它了),还是会 卡死。
隔了这么一段时间,现在的思路应该不会 局限在当时的情景里面了,现在记录下 排除Bug的一些思路,供以后 做工作时使用:
1.1、Log记录 -- 改进:
(1)、使用文件追加的方式一行一行的保存Log信息 (使用 TStringList时,它是整体保存的,会有TStringList保存不了太多信息的情况)
(2)、可以 将一整块Log信息 分成 多个小块,每块保存到一个 文件中
(3)、删掉(去除) 指定行数(或者 第n行~第n+m行) 的Log信息
1.2、调试 定位 思路
(1)、判断 程序卡主时,是 死锁 还是 代码异常:
①、看有无异常信息打印出来
②、杀 Server/Client进程,看留下的 是否活着。程序 卡主时(未杀掉时),也可以看看 Server/Client两边进程 是什么状态(活的 / 卡住 /死了)
(2)、怀疑的情况:
①、各个 Server/Client的标识,有 进程ID 改为使用 线程ID。
∵ Qt的QWebView中每一个网页 都会有子线程,使用 进程ID作为 客户端/服务端的标识的话,可能(肯定会有)造成 信息被错误的线程接收的情况--> 发现不是本线程的信息不处理(这个也要做计数)--> 不会再有触发 SetEvent的机会,于是程序 卡住,死锁了...
②、检查 各种计数:收 / 发 信息;接收到的信息 不是发给我的(线程标识不对 ; 是我自己发的 ; 不是我发的 但是是同一个进程的 别的线程发的 等等情况);我的请求还未 回复,对方的请求就来了(对方的请求来的计数);...
(3)
2、
3、
4、
5、
以上是关于项目.多进程SVG_BUG排除的主要内容,如果未能解决你的问题,请参考以下文章