代码之家  ›  专栏  ›  技术社区  ›  Miki Watts

WinDbg不间断地向控制台输出字符

  •  0
  • Miki Watts  · 技术社区  · 18 年前

    我正在开发一个POS应用程序,目前已在大约200个地点使用。Net 2.0、用于GUI的WCF和SyncFusion组件。

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

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

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

    但在这个地方,大约每1.5小时就会发生一次。我试图打开WinDbg并连接到进程,但奇怪的是,在调试输出区域,我看到了应用程序生成的跟踪消息,但也有一个不间断的字符流,特别是“b0”,它会自动重复。

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

    希望有人能想出解决这个问题的办法。

    1 回复  |  直到 18 年前
        1
  •  1
  •   Dave Moore    18 年前

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

    在这种情况下,我设置cdb在崩溃时生成一个完整的小型转储,然后使用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。转储/ma/u c:\av。dmp;Q