找出应用程序挂起的位置

Find out where application is hanging

本文关键字:位置 挂起 应用程序      更新时间:2023-10-16

是否有一种方法可以找出应用程序挂起且未完成其功能的地方?我打开了调用堆栈,但它是空的。这是什么意思?有没有人有任何建议调试应用程序是在什么时候开始挂起/变得无响应的?

编辑:我使用Visual Studio 2010

当这种情况发生在我身上时,我发现将Very Sleepy分析器附加到被调试对象上通常可以很容易地识别挂起发生的位置,即使在挂起发生后附加它-只需查找在分析器采样会话中100%处于活动状态的堆栈框架(通过按"Inclusive %"列排序列表并查看顶部)。

所有警告都启用,并让编译器生成调试信息。在Linux上,这意味着g++ -Wall -g。在源代码上工作,直到没有更多的警告。学习使用调试器(例如Linux上的gdb),并逐步使用其功能。

但是我们不能帮助你更多,因为这是系统依赖的,你没有告诉你使用的是什么系统,你没有给我们你正在调试的代码。

阅读如何调试小程序

除了使用调试器之外,还可以通过代码运行一个分析器。我的VS相当生锈,所以我不能详细说明如何做到这一点,但谷歌可以帮助。

拥有许多小函数而不是几个大函数也会有所帮助,因为配置文件的最严格粒度是函数级别。

将日志语句放入代码中。这很耗时,但是用分而治之的方法可以帮助你解决这个问题。