- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在修复一个应用程序的错误,这是一种数据消费者/ worker ,从第三方应用程序获取数据,使用提供的 API 和库来执行此操作。它是基于 c++ 的 API,.net 应用程序使用一些 c++ 来访问库。此外 - 该应用程序是多线程的,它是窗口化的(Winforms),使用了几个第三方库(nhibernate、mysql 等)。可能需要补充一点,当我们的消费者线程访问 C++ 库时,它是代码中唯一的地方。
问题是什么?当生产者应用程序关闭时(需要更多时间,超过一分钟),消费者应用程序会在几秒钟内死亡,没有错误/异常——即使它们是独立打开的。事件日志中没有信息,没有 Dr. Watson 操作,Visual Studio 中没有异常(调试只是停止)。
我试过:
找出消费者应用程序死机原因的好方向是什么?有没有办法解决这个问题(比如向用户显示提示消息,例如:“生产者应用程序正在关闭,消费者应用程序也会这样做!”)?
[编辑]
消费者应用程序是多线程的,它是一个消费者线程作为 UI 线程的插件。此外 - 我们作为生产者使用的第三方应用程序使用 COM 将信息发送到任何消费者应用程序(也称为附加组件)。
我和我的同事决定注释掉一些代码,以找到可能导致问题的代码。可能我们已经找到了——当且仅当我们将消费者注册到生产者时,应用程序才会终止。看了第三方app的文档,发现consumer app必须主动查询关闭producer的消息,否则会被producer app强行终止。
因此:95% 的问题是我们正在查询数据的第三方应用程序正在发送 COM 消息以强制终止我们的应用程序(如果我们测试它是唯一的原因,我将发布信息/更改到 wiki ).
最佳答案
这里描述的一般场景是一种非常常见的混淆和误解的来源,这些混淆和误解与人们试图理解“我的应用程序怎么会消失得无影无踪,没有留下任何痕迹”的情况有关?。
直接的假设是:我的应用程序'死亡' 或'崩溃' 或'遇到了这样的意外异常,调试器甚至看不到它因此没有创建任何转储文件。发生在我身上的好时光......
在大多数情况下,真正的答案是应用程序并没有真正崩溃或死机,也没有收到任何异常,而是简单地正常关闭,但来 self 没有的流程期待。
调试此类情况的最简单方法是在 kernel32!ExitProcess
中放置一个断点,然后跟踪堆栈并查看我们是如何到达这里的。
希望对你有帮助
关于c# - 当另一个应用程序关闭时,如何调试为什么应用程序无异常地死机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679686/
我搜索了又搜索,但对我帮助不大,因此发布了新问题。平台Ubuntu 11.10 服务器 64 位虚拟机 1.7.0_03 Tomcat 7 配置中没有什么特别之处——前端服务器是使用 ajp 连接器的
我的整个系统(Ubuntu 18.04)总是在我的 c 程序不断将一些日志写入文件大约一小时后卡住。创建的每个文件大约为 100 到 200MB,系统停机前这些文件的总量约为 40-60GB。通常,此
我现在遇到一个问题,我什至不知道如何正确调查。欢迎并感谢任何有关我如何获得更多信息的建议。 我的公司销售以 WinXP PC 为核心的产品。该产品的任务之一是能够按需启动视频播放器——在本例中为 VL
我在 Mac 上用 python 编写了一个程序,打算在 Raspberry Pi 上运行。 它包括一个会变化的背景图片,以及一个开始/停止音乐播放的按钮。 该程序使用pygame。 在 Mac 上,
刚刚将 npm 小更新到最新版本(我不记得它是什么,因为 npm 不再有效 - 因此问题)但我认为我的更新前安装的版本是5.6.0。但这可能是错误的。 无论如何在运行之后...... sudo npm
我不明白为什么这个应用程序在 send 时死掉。这是服务器的代码: #include #include #include #include #include #include #defin
当我通过 Mobaxterm 连接到 EC2 实例时,一段时间后我的 jupyter notebook 内核失去连接。 并且一些非常耗时的操作/(当前正在运行的任务)需要一次又一次地重新执行并且永无止
我是一名优秀的程序员,十分优秀!