【问题标题】:Deliberately crashing an external process under WindowsWindows下故意使外部进程崩溃
【发布时间】:2009-11-17 15:20:01
【问题描述】:

我想合成一个原生代码错误。这样我们就可以看到在发生这种情况时,某些调试输出被放置在何处。

Pskill(来自 Sys-Internals)导致正常退出。 Microsoft 似乎不再直接提供 DotCrash.exe。

有没有办法从外部导致进程崩溃?

【问题讨论】:

  • 感谢所有有用的 cmets。我们正在尝试在 Citrix 环境中调试行为,安装适用于 Windows 的调试工具可能会超出我的工资等级!我会看看系统管理员怎么说。
  • 您不需要安装调试工具。您可以将它们安装在您的开发人员 PC 上,将“Windows 调试工具”文件夹复制到服务器。无需安装。 (不过,您应该先询问您的系统管理员)
  • 这能回答你的问题吗? Force crash an application

标签: windows crash-dumps


【解决方案1】:

在使用windbg之前我已经这样做了:

  1. 开始进程
  2. 使用 windbg 附加到进程
  3. 在我的应用程序功能之一上设置断点
  4. 运行应用程序直到我遇到断点
  5. 在 windbg 中,将局部变量设置为会导致访问冲突的内容(例如,将指针设置为 0xFFFFFFFF 或将寄存器值设置为 muck)
  6. 按 f5,应用应该会崩溃

【讨论】:

    【解决方案2】:

    如果你想要的是一个核心转储,drwtsn32 -p ProcessId 会生成一个正在运行的进程的当前状态的转储。如果您有适当的调试符号,您可以获得有价值的信息。

    HTH。

    【讨论】:

    • 感谢您的提示...实际上我正在测试 Java 虚拟机的退出,它会生成一个 hs_err 文件。当自然退出发生时,我们需要捕获该文件。我想故意让 VM 出错,这样我们就可以检查 JVM 决定放置文件的位置。
    【解决方案3】:

    正如尼克提到的,这可以通过 Windows 调试工具轻松完成 - 不过我会更进一步,并使用 cdb(命令行 WinDbg)编写整个交互的脚本。

    【讨论】:

      【解决方案4】:

      如果您在任何需要的时间需要转储,您可以使用 Microsoft 的免费调试诊断工具,该工具有一个不错的 UI 或 jrbjazz 推荐的命令行drwtsn32 -p processid

      【讨论】:

        【解决方案5】:

        您可以尝试使用CreateRemoteThread。正确使用它并不容易,但让其他进程崩溃应该很容易;-)

        【讨论】:

          【解决方案6】:

          您可以安装某种钩子函数,或者使用类似detours 库的东西吗?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-09-16
            • 2018-04-23
            • 1970-01-01
            • 2018-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-31
            相关资源
            最近更新 更多