【问题标题】:windbg to debug outlook addin at the dll function call levelwindbg 在 dll 函数调用级别调试 Outlook 插件
【发布时间】:2014-10-24 16:43:33
【问题描述】:

我的 MS Outlook 2010 中有第三方插件,它的运行速度非常慢。我需要弄清楚瓶颈到底在哪里。我所知道的是,插件是由 dll 组成的,当我单击插件按钮时,会调用 dll 中的函数。我使用了一个反编译工具来分解 dll 以查看里面的类文件。但是,这个项目太大了,我发现很难跟踪其中的函数调用。 所以,我想如果我可以使用WinDBG在调试模式下跟踪函数调用。因此,我在 windbg 中打开了 outlook.exe,并在 dbg 命令窗口中输入了命令“g”开始调试。之后我使用outllook里面的插件来完成我的工作。但是,在 windbg 调试控制台中,我没有看到任何记录对 dll 的调用的条目,而且在 dll 内部发生的函数调用也没有列出。我收到这样的日志:

(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
ModLoad: 74620000 74645000   C:\Windows\system32\POWRPROF.DLL
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
.
.
.
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): C++ EH exception - code e06d7363 (first chance)
(6dc.1064): Unknown exception - code e0000002 (first chance)
ReminderQueue: ProcessNotification: TABLE_ROW_ADDED
New reminder: Subject == test dbg ApptStartTime: Tue 10/28/2014 10:30 PM, Reminder Trigger: Tue 10/28/2014 10:15 PM
ReminderQueue: ProcessNotification: End<-----

以上日志中列出的dll不是我要调试的第三方dll。我不知道为什么它没有被列出,当我使用它时,而调试处于打开状态。我在这里错过了什么?

任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: .net windows dll outlook windbg


    【解决方案1】:

    我在您的方法中发现了以下问题:

    • WinDbg 在进行性能分析方面并不是很好。它擅长分析异常和崩溃。您可能需要像 WPA 这样的性能分析器。
    • WinDbg 也不太擅长查看调用了哪些方法。在某个时间点显示调用堆栈很有用,但不能在时间记录它们。您可能需要一个 API 记录器,例如 Rohitab API monitor
    • 由于它是关于第三方加载项,您可能无法获取符号(如果开发人员未提供)。这意味着您无法获取方法的名称。所以即使你找到了瓶颈,你也无法说出它的名字。
    • 毕竟,当您发现瓶颈时,您会怎么做?由于您没有源代码,因此您可能无法进行太多更改以使其更快。

    【讨论】:

      【解决方案2】:

      我可能会使用 ProcessMonitor 和 ProcessExplorer 来查看运行缓慢的情况。使用后者您可以找到哪些线程正在占用 CPU,而使用前者您可以查看进程正在执行的可能需要很长时间的 IO 操作。您可以将其与没有插件运行的 Outlook 进行比较,看看是否正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        相关资源
        最近更新 更多