公司一程序员在编写代码的时候下了断点,结果程序运行后却无法命中断点,然后让我帮他看看怎么回事,我在那捣鼓半天,从感觉上,我觉得他断点下得应该没问题,然后我就把问题瞄准在了IDE上,我觉得可能是他的IDE哪里被他设置的有问题才导致命中不了断点。但是,我把所有可能导致代码在运行后无法命中断点的可能性都排除了后,最终还是没能给他解决问题。

打开网易新闻 查看精彩图片

断点无法命中,IDE经常自动关闭

实在没办法,我就跟他说:“你实在不行就重装IDE吧,注意要把IDE残留的文件删干净点!”。

于是,他照着我说的,就把他IDE给卸载了,然后重装了一下,但是,问题依旧没有解决!然后又让我去看看是不是还有别的问题存在。

我在帮他排查问题的时候,他随口说了一句:“最近不知道怎么的,IDE经常莫名其妙就自己关了,尤其是当我运行代码以后,经常要卡一会儿,或者我点击停止运行以后,IDE有时候也会卡一会儿,然后就自己关了!”

我听他这么一描述,我就问同事:“你只是这个项目的代码运行是这样,还是所有项目都这样?”

他仔细想了想后说:“应该是所有项目都这样,因为有一次我写了一个简单的Demo项目,就遇到了这种情况!”

他所说的这种状况,我感觉像是IDE被“劫持”了,所谓的IDE被“劫持”其实就跟网站被“劫持”差不多,总之,IDE在运行过程中,可能有其他程序正在扫描IDE或者IDE所运行的程序,好的情况就是IDE会卡一会儿,坏的情况可能就是IDE的某些执行命令被篡改,最终导致IDE无法成功运行完整个程序的编译、关闭逻辑,最终导致的情况就是我这个同事嘴里说的“IDE自己把自己关了”!

于是,我把怀疑的目光盯上了杀毒软件,问同事他的电脑有没有装杀毒软件,结果同事说没有,查了下系统自带的杀毒软件,也处于关闭状态。也就是说,这个问题的“凶手”应该不是杀毒软件。

关掉游戏防护盾,IDE恢复正常

后来,我看了下同事电脑的任务栏的小图标,其中有几个图标的软件我不认识,然后我就一一点开这些图标,想看看是什么东西,其中有一个图标我不光不认识,鼠标悬浮上去只有一段英文,但是鼠标点击以后却没有任何反应。于是,我就问我同事这个图标是干什么的。

同事想了想,然后跟我说:“这是XX游戏的防护盾软件,防盗号的!”

然后,我询问同事的意见以后,从进程里把这个软件进程给退掉了。

然后,我们再运行IDE,发现之前在代码中下的断点能够命中了,观察了一段时间以后,IDE卡的问题和IDE自动关闭的问题也没有再出现过了。

所以,我这个程序员同事出现的问题其实就是他下载的游戏中的防护盾软件在游戏退出以后,防护盾的进程依然还在运行并监测同事的电脑,并且,不知道这个游戏防护盾是否还会阻止它观察的软件的一些行为。

总之,它在监测IDE的时候,对IDE的正常运行产生了一些影响,导致同事在代码中下了断点以后,运行程序却无法命中断点,也导致了IDE的自动关闭。

最后,我告诉同事,让他看看他下载的游戏设置里面是否有开关,让这个防护盾软件不自动运行,至少要保证在游戏关闭以后,这个防护盾软件是关闭的。

其实我话说的还是比较含蓄的,但是我的同事说:“我还是把游戏卸载了吧,太可恶了!”。

结语

最后,我想说的是,我觉得吧,这个游戏防护盾的研发人员既然也是程序员,就应该想到他监测IDE后会给程序员带来什么后果,但是,他并没有对此做特殊处理,而程序员恰恰是很多游戏的重度用户,这么搞,小心顾此失彼!