前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我的程序被谁干掉了?

我的程序被谁干掉了?

作者头像
河边一枝柳
发布2021-08-06 14:58:39
5370
发布2021-08-06 14:58:39
举报

终端产品一般部署在客户的环境中,那么奇奇怪怪的问题也就容易出现了。比如Windows产品进程为什么忽然停止了?这个时候稍微有些经验的程序员会做出以下判断:

  1. 中型的产品中,代码比较复杂。是不是程序中有什么退出逻辑,没有注意到?
  2. 是不是程序崩溃了,比如资源不足或者代码bug?
  3. 是不是系统中的其他程序关闭了我们的进程?比如客户的脚本或者其他的软件。

是不是程序中有什么退出逻辑,没有注意到?

常见的程序退出的时候会有Log记录,这种情况一般通过Debug Log 结合代码审查可以进行追踪。

是不是程序崩溃了,比如资源不足或者代码bug?

如果你的程序是一个Windows服务,也许可以先看看Windows Event。当然如果是Crash,最好的方式还是通过收集dump来进行确认,可以参考我之前写过的一篇文章<<Windows程序Dump收集>>,然后再通过Windbg进行分析,可以参考<<Windbg分析程序崩溃实践>>,从而定位问题。

是不是系统中的其他程序关闭了我们的进程?

这个看似是最难查找的了,用户环境纷繁复杂。但是Windows调试工具集中的gflags可以满足我们的需求。 第一步 先使用gflags设置需要监视的进程如下图所示, 并且开启Enable Silent Process Exit Monitoring

第二步 故意kill这个进程notepad.exe,可以手动通过任务管理或者windows调试工具集中的kill.exe第三步 查看Windows Event,在应用程序事件中可以查看到是谁把你的进程给kill掉了。(下图来自于:MSDN https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/registry-entries-for-silent-process-exit)

参考

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序员的修炼之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 是不是程序中有什么退出逻辑,没有注意到?
  • 是不是程序崩溃了,比如资源不足或者代码bug?
  • 是不是系统中的其他程序关闭了我们的进程?
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档