2008-10-03 57 views
0

我正在开发一个POS应用程序,该应用程序在使用.NET 2.0,WCF和SyncFusion组件的GUI中的约200个位置中使用。WinDbg将字符输出到控制台不间断

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

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

在那个位置的计算机有一个稍微不同的硬件设置,包括LPT输出上的分离器,用于打印到POS打印机,并在视频监视器上显示输出。

虽然在这个位置,但它每隔1.5小时就会发生一次。我试图打开WinDbg并附加到进程中,但这里有一件奇怪的事情,在有调试输出的区域中,我看到了我的应用程序生成的跟踪消息,但也有不间断的字符流,特别是“ b0“,重复自己。

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

希望有人会有一个想法如何去解决这个问题。

回答

1

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

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

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

运行从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“