找出应用程序挂起的位置
Find out where application is hanging
是否有一种方法可以找出应用程序挂起且未完成其功能的地方?我打开了调用堆栈,但它是空的。这是什么意思?有没有人有任何建议调试应用程序是在什么时候开始挂起/变得无响应的?
编辑:我使用Visual Studio 2010
当这种情况发生在我身上时,我发现将Very Sleepy分析器附加到被调试对象上通常可以很容易地识别挂起发生的位置,即使在挂起发生后附加它-只需查找在分析器采样会话中100%处于活动状态的堆栈框架(通过按"Inclusive %"列排序列表并查看顶部)。
让所有警告都启用,并让编译器生成调试信息。在Linux上,这意味着g++ -Wall -g
。在源代码上工作,直到没有更多的警告。学习使用调试器(例如Linux上的gdb
),并逐步使用其功能。
但是我们不能帮助你更多,因为这是系统依赖的,你没有告诉你使用的是什么系统,你没有给我们你正在调试的代码。
阅读如何调试小程序
除了使用调试器之外,还可以通过代码运行一个分析器。我的VS相当生锈,所以我不能详细说明如何做到这一点,但谷歌可以帮助。
拥有许多小函数而不是几个大函数也会有所帮助,因为配置文件的最严格粒度是函数级别。
将日志语句放入代码中。这很耗时,但是用分而治之的方法可以帮助你解决这个问题。
相关文章:
- 挂起和取消挂起一个文件DLL
- 如何防止C++遗留代码中的挂起指针
- 为什么所有C++编译器都会崩溃或挂起此代码
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- 构建挂起,即使是适度的文件大小
- 循环挂起迭代的 std::擦除 on std::list
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 从不同进程中的另一个线程挂起/恢复线程或进程
- Boost (Beast) websocket:同步写入挂起
- 为什么析构函数挂起
- 使用互斥会挂起程序
- 在C++和 Python 程序中使用命名管道的 IPC 挂起
- 设置变量时C++程序挂起
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 从stdin读取时子进程挂起(fork/dup2竞争条件)
- 有时ShowWindow从不调用OnShowWindow,主应用程序挂起
- 如何防止GUI挂起,同时允许第二次操作与Qt中的第一次操作一起执行
- 查找位置(寻找c++初学者)以创建Windows Vista x64 Ultimate的挂起进程程序
- 找出应用程序挂起的位置