如何监控一个进程退出时的调用栈信息

x1983c 2015-03-20 01:05:52
各位牛人,小弟想求助一个排查桌面程序闪退的问题。
最近公司的一个C#编写的桌面程序在客户那里总是说程序“闪退”,这个程序会调用第三方的Dll实现功能,闪退的频率不太规律,有时候一天会出现,有时候得一两天会出现,但想重现是比较困难的。
我想写一个监控这个桌面进程的程序,在程序退出时打印出监控进程的错误信息或者有关这个进程退出原因的信息,这个信息可能会找出进程闪退的原因,由于本人没有win32编程经验,只会C#程序,这里请求各位牛人帮忙分析下方案,多谢了。
...全文
180 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
x1983c 2015-03-20
  • 打赏
  • 举报
回复
嗯,有道理,进程已退出,没办法查找线索了。 崩溃的原因我们也在分析,苦恼的是没办法重现,现在有一怀疑对象是调用第三方Dll,和客户端操作系统的问题,如果第三方的Dll运行期间崩溃导致进程退出,我们的C#主程序自然就闪退了。 有一段时间我们关闭第三方Dll调用,观察期间没出现过问题。 但我们仅是怀疑,没有办法找到程序退出的原因,程序退出都是闪退,应用程序的异常事件和AppDomain的异常事件没有触发。 我想得到进程退出时调用栈信息,再分析是不是因为调用系统某些资源还是Api导致的,如果通过这些信息能推导出是哪方出的问题就明确原因了 。
於黾 2015-03-20
  • 打赏
  • 举报
回复
等你外部监控程序意识到某个进程被结束了,或者自己崩溃自动终止了,这个进程占用的内存就已经释放掉了,你什么都看不出来的 你应该在自己的程序里做好故障诊断,而不是想什么歪门邪道 好比有个人病危了,你需要知道他最终是如何死去的,那么你应该让他写日记 等你获知他死了,再派侦探去查,可能早火化了

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧