【问题标题】:Further automation with WinDbg使用 WinDbg 进一步自动化
【发布时间】:2011-04-15 00:08:13
【问题描述】:

我正在使用 AppVerifier/WinDbg/cdb 测试在 IIS 上运行的应用程序。基本上架构如下:当 IIS 启动 cdb 时附加到进程并创建一个命名管道,然后我使用 WinDbg 连接到管道。 然后我针对应用程序运行数千个测试用例并等待 AppVerifier 抛出一些东西。

问题/疑问:

  1. 在测试期间(大约 10 小时),IIS 会重新启动大约一千次,每次重新启动时都会关闭 WinDbg,我必须手动重新启动 WinDbg。有没有办法说WinDbg在管道关闭时不关闭,但重试连接它?
  2. 我必须一直坐在 WinDbg 前面等待 AppVerifier 抛出一些东西?有没有办法让 WinDbg 在异常停止时发出哔哔声或显示弹出窗口?

谢谢。

【问题讨论】:

    标签: windows debugging windbg


    【解决方案1】:

    您可以使用sxe 命令(或其他sx* 命令)让WinDbg 在遇到异常时运行命令。举个简单的例子,当一个模块被加载时,它会打印“Hello, world:”:

    sxe -c ".printf \"Hello, world: \"" ld
    

    您可能会考虑将此与.beep 命令结合使用,但这会导致语法错误。我认为这可能与.beep 帮助中的注释“此命令不能在脚本文件中使用”有关。不过,您应该可以使用.shell 做一些有用的事情。

    我还没有尝试过,但也许可以使用sx* 命令捕获“进程退出”事件来解决您的重新连接问题。或者您可以让以 IIS 启动的 cdb 实例在发生异常时通知您,以便您可以使用 WinDbg 连接到它?

    【讨论】:

    • "或者,您可以让由 IIS 启动的 cdb 实例在发生异常时通知您,以便您可以使用 WinDbg 连接到它?" - 我想这会解决这两个问题 - 任何想法如何设置?
    • 我认为这将类似于cdb -c "sxe -c "".shell sendMeAnEmail.exe"" someException"。 (不过,我不知道这是否是逃避引号的正确方法。)
    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多