0

我正在开发一个 POS 应用程序,目前在大约 200 个位置使用 .Net 2.0、WCF 和 SyncFusion 组件作为 GUI。

两天前,我们在一个新位置安装了该应用程序,并且该应用程序一直在遭受突然终止。

该应用程序有一个事件和异常的运行日志,所以如果它发生了什么事,日志中总会有一些东西。在这种情况下,日志被简单地切断。我们在其他地方也遇到过类似的情况,但它们非常罕见,而且发生的次数不超过一两次,因此我们无法捕获调试转储。

该位置的计算机的硬件设置略有不同,包括 LPT 输出上的分离器,用于打印到 POS 打印机和在视频监视器上显示输出。

不过,在这个位置,它大约每 1.5 小时发生一次。我尝试打开 WinDbg 并附加到进程,但奇怪的是,在有调试输出的区域,我看到了我的应用程序生成的跟踪消息,但还有一个不间断的字符流,具体来说,“ b0" 重复。

我的问题是我不明白那个“b0”是从哪里来的,它是什么意思。我怀疑它可能是分离器,但我要到星期天才能测试它。

希望有人会知道如何解决这个问题。

4

1 回答 1

1

听起来您在应用程序中遇到了一个非托管异常,它可能会绕过您尝试执行的任何日志记录。

在这种情况下,我设置 cdb 以在崩溃时生成完整的 MiniDump,然后运行带有 SOS 扩展的 WinDbg 来分析转储。

来自 MSDN 博客 ( http://blogs.msdn.com/pfedev/ ):

从 Debugging Tools for Windows 目录运行此命令:

C:\debuggers> cdb -iaec "-c \".dump /u /ma c:\dumps\av.dmp;q\""

这会将 CDB 调试器配置为 AeDebug 注册表项崩溃的默认处理程序。您可以通过浏览注册表项来验证设置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

并查看这两个值:

值名称:自动值数据:1

值名称:调试器 值数据:“c:\debuggers\cdb.exe” -p %ld -e %ld -g -c “.dump /ma /uc:\av.dmp;q”</p>

于 2008-10-08T03:12:18.000 回答