c#写的控制软件运行闪退,捕获不到错误信息

奇点码农 2021-03-30 10:33:25

这是个偶发的错误,写的软件,每个方法都会捕捉到错误信息,这次没有错误日志,去系统日志里看了下发现了,这个错误,推测是内存的问题,请大佬们解惑!
...全文
2594 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

这个原因找到了么,现在我也遇到了。。。

奇点码农 2022-10-20
  • 举报
回复
@那小子真帅victor 没有找到原因,怀疑是软件崩溃了,建议监控内存,或者在不同版本的framework版本下运行
  • 举报
回复
@奇点码农 和别人合作的一个项目,我是写库的,图像数据回调给另外一个同事写的代码,然后报的错误,是UI处理问题导致了ntdll
奇点码农 2022-11-29
  • 举报
回复
@那小子真帅victor 这种问题比较好找,try {} catch(Exception ex){写下Error日志},很容易就找到Bug了
zhou_shunmin 2022-02-14
  • 打赏
  • 举报
回复

找到什么原因了吗

奇点码农 2021-03-31
  • 打赏
  • 举报
回复
引用 9 楼 白衣如花 的回复:
UnhandledException不一定都能捕捉到。比如我用ocx控件,内部异常的话,根本不会进入到UnhandledException里面 所以你可以多打印一些日志,可以在奔溃的时候,看最后一条日志,至少能分析奔溃所在位置
嗯,这个方法是可以但是也不能运行一步打印一个日志啊,而且还占用大量系统资源,错误捕获也不精确,感觉还是完善系统的异常捕获比较好
奇点码农 2021-03-31
  • 打赏
  • 举报
回复
引用 7 楼 wtnu200 的回复:
先写个全局捕捉异常,在Program.cs里,能捕捉到最好
是个好方法,可以把异常的情况考虑全一点都写在Program里面,不过FrameWork版本可能导致定位不到行
白衣如花 2021-03-31
  • 打赏
  • 举报
回复
UnhandledException不一定都能捕捉到。比如我用ocx控件,内部异常的话,根本不会进入到UnhandledException里面

所以你可以多打印一些日志,可以在奔溃的时候,看最后一条日志,至少能分析奔溃所在位置
wtnu200 2021-03-31
  • 打赏
  • 举报
回复
如果捕捉不到异常,通常是调用第三方dll引发的,这类就很难搞了,我也遇到过,只有用最笨的方法,猜测大概位置,使用写日志方法定位错误的代码行
wtnu200 2021-03-31
  • 打赏
  • 举报
回复
先写个全局捕捉异常,在Program.cs里,能捕捉到最好
wanghui0380 2021-03-30
  • 打赏
  • 举报
回复
崩溃了,也就是软件遇到了无法恢复的异常 你可以在崩溃前拦截,然后使用minidump去抓个dump出来,然后在使用dump分析工具分析 AppDomain.CurrentDomain.UnhandledException+=你的处理方法 这个方法能拦截软件崩溃前信息,当然一般到了这里,软件已经崩溃,已经无法救了,只能记录日志,抓dump以提供后续分析了
xuzuning 2021-03-30
  • 打赏
  • 举报
回复
缺少底层资源
奇点码农 2021-03-30
  • 打赏
  • 举报
回复
ntdll.dll模块?????
奇点码农 2021-03-30
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
缺少底层资源
引用 5 楼 wanghui0380 的回复:
[quote=引用 4 楼 奇点码农 的回复:][quote=引用 3 楼 wanghui0380 的回复:]崩溃了,也就是软件遇到了无法恢复的异常 你可以在崩溃前拦截,然后使用minidump去抓个dump出来,然后在使用dump分析工具分析 AppDomain.CurrentDomain.UnhandledException+=你的处理方法 这个方法能拦截软件崩溃前信息,当然一般到了这里,软件已经崩溃,已经无法救了,只能记录日志,抓dump以提供后续分析了
对于c#编程,怎么能预防这种错误呢?是内存泄露造成的吗?如果是一般逻辑错误都会抓到错误日志的[/quote] 不是捕获不到,而是没捕获。 UnhandledException也就是未处理异常,同时是当前Domaind所有阶段都没处理的异常,所以当前domain退出 我给你一个我实际处理的崩溃方式------也是告诉你这种崩溃也许并不是你想的那种内存啊,泄漏啊,也许他只是一个简单错误 真实案例: 某个服务崩溃,通过UnhandledException 的Log发现,只是一个很小的异常,监听某个目录文件并进行处理,在启动前第3方软件又把文件删除了,于是openfile异常(虽然我代码也抓了dump,但实际上我并没有进行dump分析,仅仅日志记录分析就可以定位了) 虽然这只是一个很小的异常,只是因为这种意外没有其他地方进行处理,所以崩溃了。自然这种异常我只需要简单在openfile的时候加个try就不崩溃了[/quote] 明白了,捕获异常,分析异常,才可以从根本上解决问题
wanghui0380 2021-03-30
  • 打赏
  • 举报
回复
引用 4 楼 奇点码农 的回复:
[quote=引用 3 楼 wanghui0380 的回复:]崩溃了,也就是软件遇到了无法恢复的异常 你可以在崩溃前拦截,然后使用minidump去抓个dump出来,然后在使用dump分析工具分析 AppDomain.CurrentDomain.UnhandledException+=你的处理方法 这个方法能拦截软件崩溃前信息,当然一般到了这里,软件已经崩溃,已经无法救了,只能记录日志,抓dump以提供后续分析了
对于c#编程,怎么能预防这种错误呢?是内存泄露造成的吗?如果是一般逻辑错误都会抓到错误日志的[/quote] 不是捕获不到,而是没捕获。 UnhandledException也就是未处理异常,同时是当前Domaind所有阶段都没处理的异常,所以当前domain退出 我给你一个我实际处理的崩溃方式------也是告诉你这种崩溃也许并不是你想的那种内存啊,泄漏啊,也许他只是一个简单错误 真实案例: 某个服务崩溃,通过UnhandledException 的Log发现,只是一个很小的异常,监听某个目录文件并进行处理,在启动前第3方软件又把文件删除了,于是openfile异常(虽然我代码也抓了dump,但实际上我并没有进行dump分析,仅仅日志记录分析就可以定位了) 虽然这只是一个很小的异常,只是因为这种意外没有其他地方进行处理,所以崩溃了。自然这种异常我只需要简单在openfile的时候加个try就不崩溃了
奇点码农 2021-03-30
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
崩溃了,也就是软件遇到了无法恢复的异常 你可以在崩溃前拦截,然后使用minidump去抓个dump出来,然后在使用dump分析工具分析 AppDomain.CurrentDomain.UnhandledException+=你的处理方法 这个方法能拦截软件崩溃前信息,当然一般到了这里,软件已经崩溃,已经无法救了,只能记录日志,抓dump以提供后续分析了
对于c#编程,怎么能预防这种错误呢?是内存泄露造成的吗?如果是一般逻辑错误都会抓到错误日志的

110,534

社区成员

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

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

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