应用程序崩溃时没有致命异常的迹象 | NLog 版本 2 |紧凑框架3.5

2023-12-02

我有一个 .Net Compact Framework 3.5 应用程序,它使用 Nlog 2.0 版来记录信息、错误和致命异常。大多数情况下,日志记录会按预期工作,并在崩溃之前记录致命异常。但有时我们会观察到应用程序崩溃时没有留下任何错误/异常的迹象。

让我详细说明一下场景:

  1. 应用程序创建很少的线程,所有线程都在其调用堆栈的开头添加了 try-catch 块。因此记录胎儿 崩溃前的异常。
  2. 主线程有“AppDomain.CurrentDomain.UnhandledException”来记录其调用堆栈上的任何胎儿异常。
  3. 该应用程序确实加载了一些第三方托管的 dll,并对 Wnce dll 执行了一些 PInvoke。

但我相信,即使某些第三方 DLL 崩溃(或者说它创建了一个崩溃的新线程),我至少应该看到一些ThreadAbortExceptions在日志中,由我的应用程序线程在退出之前记录。

Nlog的关键配置参数有:

A。文件目标.AutoFlush = true

b. FileTarget.KeepFileOpen= false

C。 FileTarget 未包装在任何异步包装器或任何缓冲中 包装纸。

如果我遗漏了什么,请告诉我。


崩溃的可能原因包括 OutOfMemory 异常或 StackOverflowException。来自后者的文档:

版本注意事项

在 .NET Framework 的早期版本中,您的应用程序可以捕获 StackOverflowException 对象(例如,从无界递归中恢复)。但是,目前不鼓励这种做法,因为需要大量附加代码才能可靠地捕获堆栈溢出异常并继续程序执行。

从 .NET Framework 2.0 版开始,StackOverflowException 对象无法被 try-catch 块捕获,并且默认情况下会终止相应的进程。因此,建议用户编写代码来检测和防止堆栈溢出。例如,如果您的应用程序依赖于递归,请使用计数器或状态条件来终止递归循环。请注意,托管公共语言运行时 (CLR) 的应用程序可以指定 CLR 卸载发生堆栈溢出异常的应用程序域,并让相应的进程继续运行。有关更多信息,请参阅 ICLRPolicyManager 接口和托管概述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序崩溃时没有致命异常的迹象 | NLog 版本 2 |紧凑框架3.5 的相关文章

  • 如何使用 PDB 文件

    我听说使用 PDB 文件可以帮助诊断崩溃发生的位置 My basic理解是你给 Visual Studio 源文件 pdb 文件和崩溃信息 来自 Dr Watson 有人可以解释一下这一切是如何运作的 涉及什么吗 谢谢你 PDB 文件将程序
  • 应用程序在 JSON jparser 发出 http 请求时崩溃

    您好 我使用本教程连接到网络或本地的 mySQL 数据库 here http www androidhive info 2012 05 how to connect android with php mysql 虽然所有服务器端 php 文
  • 防止 Windows 中的崩溃消息

    我的应用程序需要扫描经常导致崩溃的第三方文件 为了克服这个问题 它使用一个单独的进程来扫描这些文件并 每当这个进程崩溃时 我的应用程序就会实例化另一个应用程序 我的问题是 每次崩溃后我都会收到 Windows 崩溃消息 AuxScanner
  • DI:IDisposable 对象的处理寿命

    所以我正在开发我的 DI IoC 容器OpenNETCF IoC http ioc codeplex com我有一个 合理的 功能请求 为容器集合中的 IDisposable 项目添加某种形式的生命周期管理 我目前的想法是 由于我无法查询对
  • 如何为 Windows CE 创建应用程序 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 CE 环境的新手 我想为在 CE 5 及更高版本 上运行的计算机 Intel 创建应用程序 我到底需要做什么才能开始 该从哪里开
  • scanf导致C程序崩溃

    这个简单的问题导致我的整个程序在第一次输入期间崩溃 如果我删除输入 程序可以正常工作 但是一旦我将 scanf 添加到代码中并输入输入 程序就会崩溃 include
  • Windows Mobile - Compact Framework 程序即服务?

    让我的 C Compact Framework 程序在 Windows Mobile 设备上后台运行的最佳方式是什么 我需要响应不同的事件 例如带有特定内容的短信 我不想在进程启动时启动任何 UI 而是在后台运行 直到需要 UI 如何才能做
  • 从 Visual Studio 2015 Update 1 中的生成后事件执行 AL.EXE 时出现错误 -1073741819 (0xC0000005)

    使用 Visual Studio 2015 Update 1 在生成后事件中运行命令 AL EXE 时 我正在 Visual C CLR 类库项目 C CLI 中试验一个问题 Visual Studio 2015 中没有发生 AL EXE
  • 导致“RuntimeException:二进制 XML 文件第 #20 行:您必须提供layout_height 属性”的原因。 (怀疑是ActionBarScherlock)?

    我有 ActionBarScherlock 的应用程序 我使用 ACRA 我收到一些用户的崩溃报告 其中包含以下错误 java lang RuntimeException Binary XML file line 20 You must s
  • cf.net 异常和其他日志记录

    我想向在 WM6 Pro 上运行的 cf net 应用程序添加一些日志记录功能 我正在研究记录异常和一些更敏感的代码部分 我希望将日志存储在本地 即在设备上 并将它们可靠地上传到服务器 它们需要排队 我的应用程序偶尔会连接 有谁知道 log
  • 如何将 NLog 用于 DLL

    我正在尝试使用 Nlog Refresh 1 0 为类库项目实现一个简单的日志 当 nlog 从 dll 中实例化时 它似乎不会创建日志文件 还有其他办法解决这个问题吗 我的配置文件如下所示
  • Apple 由于崩溃而拒绝了我的应用程序,无法重现它

    我刚刚上传了一个应用程序到应用程序商店 它是为ios 7开发的 他们拒绝了该应用程序 因为我无法重现崩溃 他们向我发送了这份崩溃报告 Exception Type EXC BAD ACCESS SIGSEGV Exception Subty
  • 包装 NLog 时如何保留调用点信息

    我有一个包装 NLog 的类 称为 NLogger 我的日志保存到我的数据库中 我遇到的问题是如何显示日志记录发生的位置 我有这个
  • 如何在其他项目中添加NLog类库项目

    我已经用 C 创建了一个控制台项目 在该项目中我使用 NLog 进行日志记录 当我运行该项目时 它成功登录到多个目标 例如控制台 文件 EventLog 以及 Sentinal 但是 当我将此项目作为类库并尝试添加对另一个项目的引用时 它不
  • 生成随机数背后的数学(崩溃游戏 BTC Casino)

    我正在开发一款基于网络的游戏 其中有多个迷你游戏 我们坚持还添加一个在赌博界非常流行的崩溃游戏 然而 我们一直在努力理解生成随机 几乎不可预测 数字的概念 大多数赌博网站都会提供哈希值等来证明数字未被篡改 我们真的不需要这个 因为我们的游戏
  • .NET Compact Framework 应用程序中的版本号

    我需要在屏幕上显示 NET Compact Framework 版本号 我将 NET CF 2 0 与 Windows CE 4 0 结合使用 到目前为止 我完全忽略了版本号 我需要向程序集中添加任何内容吗 我如何以编程方式检索它 不幸的是
  • 通过 USB 远程桌面到 Windows CE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如果我只需要在 Windows CE 设备上使用 USB 端口 是否有任何方法可以远程桌面到该设备 我希望能够录制屏幕 ActiveSyn
  • 删除 UICollectionView 中的最后一个单元格会导致崩溃

    您好 我正在使用自定义 UICollectionView https github com SureCase WaterfallCollectionView https github com SureCase WaterfallCollec
  • 未知异常和崩溃

    当我尝试快速滚动表格视图或从远程重新加载数据时 我的应用程序崩溃了 当我先进行远程获取然后滚动表格视图时 一切似乎都工作正常 我不知道下面的崩溃日志意味着什么 它只是有时工作正常 有时崩溃 Incident Identifier 710A1
  • iphone sqlite 静态链接?

    有人静态链接 sqlite 而不是使用动态链接 吗 我遇到的问题是 越狱手机的用户没有与普通 iPhone 所采用的 sqlite 版本相同的版本 因此导致崩溃 我假设在我的应用程序中静态链接已知版本的 sqlite 就是答案 我需要全文支

随机推荐