【发布时间】:2012-02-22 17:23:34
【问题描述】:
最近,来自同一家公司的两名使用我们软件的用户开始遇到随机关闭问题(没有错误消息、崩溃对话框、退出对话框等)。我们能够将两个系统的共同点隔离到一个特定的软件(移动宽带设备管理器)中。当此软件运行时,我们的软件会在约 2 分钟的时间范围内随机关闭。如果我们退出宽带管理器,我们的软件将无限期运行而不会出现问题。
我想不出为什么我们的软件和他们的软件之间会有任何交互。我们的软件无法访问网络,并且在任何情况下都没有插入宽带调制解调器。
我们为客户提供了一种解决方法(以管理员身份运行我们的软件或在运行我们的软件之前退出移动宽带管理器),但我们希望解决问题,这样他们就不必担心做这些事情。
我在我们的软件上附加了一个远程调试器,但我不太确定在哪里可以准确地调查我们的软件是如何死亡的。当我们的进程结束时,调试只会以退出代码 0 结束。
我的问题是,我如何调查 Win32 进程是如何/为什么被杀死的,我可以做些什么来防止它发生?
编辑:我在十六进制编辑器中打开了宽带管理器及其使用的 DLL,并引用了与我们的名称完全相同的可执行文件。所以我想这就是链接。重命名我们的可执行文件为我们的用户解决了问题,但不幸的是,Sprint SmartView 的愚蠢性并没有解决。
编辑:为了帮助罕见的其他开发人员:如果您的可执行文件名为phoenix.exe 并且您的最终用户正在运行 Sprint SmartView,这就是您的程序随机死亡的原因。重命名你的可执行文件将解决这个问题(或者花费你生命中的几个月试图找出在 Sprint 通知谁来真正解决这个问题)。具体提到phoenix.exe的文件是WwanCoreSdk.dll。
【问题讨论】:
-
如果“连宽带调制解调器都没有插入”,你不能卸载驱动程序,然后告诉它的作者他们有问题吗?
-
@tomfumb : 从客户的计算机上卸载驱动程序?我当然希望不会!
-
@ildjarn 请在发表评论之前花点时间阅读 - “让他们这样做”很清楚
-
@ildjarn:“从你不拥有的计算机上删除软件是不道德的”——我似乎每次拜访我父亲时都必须这样做……;)
-
显然是的,这就是链接。你能告诉我们被杀死的 EXE 的名字是什么,所以我们不能这样称呼我们吗? :-)
标签: c++ windows winapi process kill