【问题标题】:generating dmp files from an inproc com dll running in dllhost.exe从在 dllhost.exe 中运行的 inproc com dll 生成 dmp 文件
【发布时间】:2011-07-29 09:14:27
【问题描述】:

我正在编写一个在 dllhost.exe 代理中运行的 inproc com dll,但我发现调试它时出现问题。

在我编写的 exe 中,我有一个顶级异常处理程序,它创建一个 .dmp 文件,我可以在 windbg 中加载然后崩溃,我不确定如何从 dllhost 执行此操作。是否有另一种方法可以在崩溃时从 dllhost.exe 生成堆栈转储?我看过这个页面(http://support.microsoft.com/kb/910904),但它似乎涉及组件服务程序。是否有一些注册表设置?因为它将安装在其他计算机上。

谢谢

【问题讨论】:

  • 重复同一个问题有什么意义?
  • 有人建议我把这个问题分成两个不同的问题,所以我做了这个。我在另一个评论中放了一个链接。
  • 还没有人回答这半个问题。我上周在这个问题(stackoverflow.com/questions/5505703/…)中询问了一个自定义代理,但你告诉我不要再做一个。
  • 嗯,你不能指望我记住我帮助过的所有 SO 用户的名字。我最初的评论是基于您对 COM 编程感到不舒服的评论。您在后续问题中遗漏的内容。选择正确的方法最终取决于您,您不能假设 SO 用户会让自己对此负责。

标签: c++ windows com


【解决方案1】:

您可以设置一个即时调试器以在进程崩溃时运行,而不是让进程自行转储。对于旧版本的 Windows,Dr.Watson 是一个不错的,它可以为崩溃的应用程序自动生成转储:http://en.wikipedia.org/wiki/Dr.Watson(debugger)我相信 Windows Vista 和更高版本已将 Dr.Watson 替换为 Windows 错误报告 (http://support.microsoft.com/kb/931673)

使用更简单的工具是 Sysinternals procdump(使用 -e 选项转储未处理的异常):http://technet.microsoft.com/en-us/sysinternals/dd996900

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多