我正在开发一个POS应用程序,该应用程序目前在大约200个位置使用,使用.Net 2.0,WCF和SyncFusion组件进行GUI。
两天前,我们将应用程序安装在一个新的位置,它一直在突然终止应用程序。
应用程序有一个事件和异常的运行日志,所以如果发生了某些事情,日志中总会有一些东西。在这种情况下,简单地切断日志。我们在其他地方遇到过类似的情况,但它们非常罕见,并且发生的次数不超过一次或两次,所以我们无法捕获调试转储。
该位置的计算机硬件设置略有不同,包括LPT输出上的分离器,用于打印到POS打印机,以及在视频监视器上显示输出。
在这个位置,它大概每1.5小时发生一次。我试图打开WinDbg并附加到进程,但这是奇怪的事情,在有调试输出的区域,我看到我的应用程序产生的跟踪消息,但是还有一个不间断的字符流,特别是,“ b0“重复自己。
我的问题是,我不明白“b0”来自何处,它意味着什么。我怀疑它可能是分离器,但我不能在星期天之前测试它。
希望有人知道如何解决这个问题。
答案 0 :(得分: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"