我可以在分析时进行调试吗?

Posted

技术标签:

【中文标题】我可以在分析时进行调试吗?【英文标题】:Can I debug while profiling? 【发布时间】:2013-04-10 09:17:29 【问题描述】:

我有一个 VS2012 解决方案和 WPF 应用程序,在发布和调试模式下无异常运行,但如果我尝试对其进行分析,当我执行一些 UI 操作(打开虚拟机、它们的视图控件等)时应用程序崩溃

当应用程序在分析模式下运行时,是否有调试异常的方法?

【问题讨论】:

Visual Studio 2012 更新 2 后问题消失 恕我直言,如果您分析的原因是为了找到“瓶颈”(而不是仅仅测量),最好的方法是使用调试器。例如在this answer 有 43 倍的加速。与宾利相比,它就像狗拉雪橇。你更愿意在北极拥有哪个? 【参考方案1】:

没有。应用程序仅在对其进行分析时失败的原因并不多。这通常很简单,例如工作目录不同,因此当您的应用程序执行不明智的操作(例如尝试打开具有相对路径名的文件)时,您的应用程序将会崩溃。并且没有 try/catch 来处理丢失文件的问题。

您需要关注的是当您的应用在用户的机器上运行并像这样崩溃时会发生什么。没有分析器,但同样的问题是不知道它为什么崩溃。您需要花一些时间编写报告未处理异常的代码。为 AppDomain.CurrentDomain.UnhandledException 事件编写事件处理程序。记录或显示 e.ExceptionObject.ToString() 的值。现在您已经收到了一条很好的异常消息和Holy Stack Trace,它准确地向您展示了您的程序最终是如何崩溃的。几乎总是足以找出代码中的微小变化以防止崩溃。或者是帮助用户的 IT 人员解决问题的更好方法。

【讨论】:

【参考方案2】:

您始终可以将调试器附加到进程。只需打开调试->附加到进程。如果您想中断任何异常,只需按 Ctrl+Alt+E 并选择正确的选项。如果您的代码中没有发生异常,您可以尝试为选定的 dll 加载 pdb。

【讨论】:

以上是关于我可以在分析时进行调试吗?的主要内容,如果未能解决你的问题,请参考以下文章

GDB调试汇编分析

如何分析“绑定循环”

GDB调试汇编堆栈过程分析

请问大佬有WinDbg(蓝屏分析修复工具) V6.7 汉化版软件免费百度云资源吗

iphone崩溃分析一定准确吗

如何在 Visual Studio 中调试/分析 BSOD 转储?