最近,来自同一家公司的两个软件用户开始经历随机闭包(没有错误消息、崩溃对话框、退出对话框等等)。我们能够将这两个系统的共同点归结为一个特定的软件(移动宽带设备管理器)。当这个软件运行时,我们的软件在大约2分钟的时间内随机关闭。如果我们退出宽带管理器,我们的软件将无限期地运行,没有问题。
我想不出为什么我们的软件和他们的软件之间会有任何交互。我们的软件无法接入网络,而且宽带调制解调器在任何情况下都没有插入。
我们为客户提供了一项工作(以管理员身份运行我们的软件,或者在运行我们的软件之前退出移动宽带管理器),但是我们希望解决这个问题,这样他们就不需要担心做这两件事了。
我在我们的软件上附加了一个远程调试器,但我不太确定该在哪里查找我们的软件是如何死亡的。当进程结束时,调试只以退出代码0结束。
我的问题是,我如何调查如何/为什么Win32进程被杀死,我能做些什么来防止它的发生?
编辑:我打开了宽带管理器和它在十六进制编辑器中使用的DLL,并引用了与我们的名称完全相同的可执行文件。所以我想这就是联系。重命名我们的可执行文件为我们的用户解决了问题,但不幸的是,Sprint SmartView的愚蠢并没有解决。
编辑:为了帮助罕见的其他开发人员:如果您的可执行文件名为phoenix.exe,而最终用户正在运行Sprint SmartView,这就是为什么您的程序正在随机死亡的原因。重命名您的可执行文件将解决这个问题(或者花费您生命中的几个月时间来确定在Sprint上通知谁才能真正解决这个问题)。专门提到phoenix.exe的文件是WwanCoreSdk.dll。
发布于 2012-01-30 23:12:52
如果你的应用程序是32位,试着检查一下WinAPIOverride32。它将向您展示由程序完成的所有系统,因此,如果您能够从上面提到的管理器中正确地在日志中杀死您的程序,那么应该可以更容易地解释为什么会发生这种情况。
发布于 2012-01-30 22:53:20
不幸的是,
进程不能阻止自己被终止。
http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx
https://stackoverflow.com/questions/9071962
复制相似问题