C语言程序假死(不工作),求调试方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序假死(不工作),求调试方法相关的知识,希望对你有一定的参考价值。

我有一个C语言工程,编译后运行几天就会出现有一分钟以内的假死现象,这段时间内不工作,我是通过日志看出来的,之后又恢复正常,由于不定时出现和出现时间短的原因,无法捕获到有用的信息,只从代码层面上看也看不出来,有没有什么调试方法或者分析方法希望大家给提供一些,万分感谢!

参考技术A 明显是代码问题,如果是多线程检查一下线程的逻辑顺序,如果是单线程检查一下内存泄漏和越界问题 参考技术B 网gdb会用吗?

先运行一次,记录假死的时候程序运行到哪一行,设断点,然后单步追踪,看数据的情况,有没有异常
把程序从server拷出来 到网吧去调试
参考技术C 再假死时,记录下CPU的情况
根据CPU情况,再看各个线程情况,逐步定位到细节。追问

程序在服务器上运行,基本出问题以后才知道,而且时间短根本来不及。

追答

既然你都从日志里知道是假死了,那么在假死判断的分支里增加CPU记录。
因为现在你都不清楚CPU是繁忙还是等待信号闲置状态。
总之先搞些信息来才能一步步定位啊

参考技术D 跑一下静态检查,说不定问题就能找到 第5个回答  2014-01-23 用GDB调试设置断点追问

程序在服务器上运行,基本出问题以后才知道,而且时间短根本来不及。

以上是关于C语言程序假死(不工作),求调试方法的主要内容,如果未能解决你的问题,请参考以下文章

用c语言编程,求从1的阶乘一直加到20的阶乘。

在C语言中有啥方法可以测试输入的数字的长度?

IIS频繁假死,然后把应用程序池回收一下,就能好了,然后过一会儿又不行了,怎么办啊?请高手帮忙!

C语言 任意表达式求值。(栈的应用

C 给某个方法设定执行超时时间

c语言简单求和,编写程序:输入两个数,求两个数的和