WinDbg输出字符到控制台不间断

时间:2020-03-06 15:04:32  来源:igfitidea点击:

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

两天前,我们在新位置安装了该应用程序,但该应用程序突然终止。

该应用程序具有运行中的事件和异常日志,因此,如果发生任何事情,日志中总会有东西。在这种情况下,日志将被简单地切断。我们在其他位置也遇到过类似情况,但是这种情况极为罕见,而且发生的次数不超过一两次,因此我们无法捕获调试转储。

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

在这个位置,大约每1.5个小时就会发生一次。我曾尝试打开W​​inDbg并将其添加到该过程中,但这很奇怪,在调试输出的区域中,我看到了我的应用程序生成的跟踪消息,但也有不停的字符流,特别是" b0"重复。

我的问题是我不知道" b0"的来源以及它的含义。我怀疑它可能是分离器,但直到周日我才能对其进行测试。

希望有人对如何解决这个问题有所了解。

解决方案

听起来我们在应用程序中遇到了一个非托管异常,该异常可能会绕过我们尝试执行的所有日志记录。

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

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

从Windows调试工具目录运行以下命令:

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

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

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

并查看以下两个值:

值名称:自动值数据:1

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