代码之家  ›  专栏  ›  技术社区  ›  johnc

带SOS的windbg,在正确的异常情况下停止

  •  1
  • johnc  · 技术社区  · 14 年前

    我有一个Windows服务,它间歇性地抛出一个异常,有时会终止它的sqlconnection,有时会完全终止该服务。它在客户的网站上实时运行。

    我计划在上面使用windbg+sos进行崩溃转储,这样我就可以在空闲时调试它了。

    但是,在我第一次尝试时,当调试器遇到在代码中捕获和处理的第一次机会异常时(正如我使用 sxe clr 命令)。

    帮助文件似乎建议我使用 sxd clr ,而不是 SXE清除 ,以捕获第二个更改异常而不是第一次机会异常。

    然而,在我的测试中,生成的、捕获的和处理的异常被 SXD清除 命令,即它被注意和忽略。

    这种不在抛出的异常上停止的行为,可能是因为我在代码中显式地抛出了异常,还是所有的clr异常都无法用 sxd 命令?我应该使用不同的命令吗?

    其次,由于windbg不专门识别clr错误,是否可以告诉它只在特定的、未处理的异常(即invalidOperationException)上停止?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Brian Rasmussen    14 年前

    仅使用ADPLUS创建转储文件可能更容易。 This article 显示如何使用ADPLUS为特定.NET异常创建小型转储。