WinDbg输出字符到控制台不间断
时间:2020-03-06 15:04:32 来源:igfitidea点击:
我正在开发一个POS应用程序,目前使用GUI的.Net 2.0,WCF和SyncFusion组件在大约200个位置中使用。
两天前,我们在新位置安装了该应用程序,但该应用程序突然终止。
该应用程序具有运行中的事件和异常日志,因此,如果发生任何事情,日志中总会有东西。在这种情况下,日志将被简单地切断。我们在其他位置也遇到过类似情况,但是这种情况极为罕见,而且发生的次数不超过一两次,因此我们无法捕获调试转储。
该位置的计算机的硬件设置略有不同,包括LPT上的分离器,该分离器既可用于打印到POS打印机,又可在视频监视器上显示输出。
在这个位置,大约每1.5个小时就会发生一次。我曾尝试打开WinDbg并将其添加到该过程中,但这很奇怪,在调试输出的区域中,我看到了我的应用程序生成的跟踪消息,但也有不停的字符流,特别是" 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