c程序出现这样的问题应该怎样办?

panpan1202 2011-05-31 03:55:34
是这样,程序运行了几天几夜后,就快要算完了,结果出现错误了,点调试,出现对话框,对话框显示源程序的路径,我点确定就是没有反应,好几次,都是运算到差不多步长的时候,出现问题,然后就是类似的情形,这个怎么办啊?也没办法调试,不知道错误在哪里啊,谢谢
...全文
125 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿尼小码 2011-09-22
  • 打赏
  • 举报
回复
几天几夜,哎什么程序?
xingyongjian 2011-09-22
  • 打赏
  • 举报
回复
这种问题, 上帝也解决不了; 自己找吧!!
喜洋洋呵呵 2011-09-22
  • 打赏
  • 举报
回复
记录好错误日志 ,看看内存是否耗尽,
赵4老师 2011-09-22
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
赵4老师 2011-09-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
#include <windows.h>
#include <io.h>
#else
#include <unistd.h>
#include <sys/time.h>
#include <pthread.h>
#define CRITICAL_SECTION pthread_mutex_t
#define _vsnprintf vsnprintf
#endif
//Log{
#define MAXLOGSIZE 100000000
#define ARRSIZE(x) (sizeof(x)/sizeof(x[0]))
#include <time.h>
#include <stdarg.h>
char logfilename1[]="MyLog1.log";
char logfilename2[]="MyLog2.log";
char logstr[16000];
char datestr[16];
char timestr[16];
char ms10[3];
CRITICAL_SECTION cs_log;
FILE *flog;
int centisec() {
#ifdef WIN32
return ((GetTickCount()%1000L)/10)%100;
#else
struct timeval tv;

if (!gettimeofday(&tv,NULL)) {
return ((tv.tv_usec%1000000L)/10000)%100;
} else {
return 0;
}
#endif
}
#ifdef WIN32
void Lock(CRITICAL_SECTION *l) {
EnterCriticalSection(l);
}
void Unlock(CRITICAL_SECTION *l) {
LeaveCriticalSection(l);
}
#else
void Lock(CRITICAL_SECTION *l) {
pthread_mutex_lock(l);
}
void Unlock(CRITICAL_SECTION *l) {
pthread_mutex_unlock(l);
}
#endif
void LogV(const char *pszFmt,va_list argp) {
struct tm *now;
time_t aclock;


if (NULL==pszFmt||0==pszFmt[0]) return;
if (-1==_vsnprintf(logstr,ARRSIZE(logstr),pszFmt,argp)) logstr[ARRSIZE(logstr)-1]=0;
time(&aclock);
now=localtime(&aclock);
sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);
sprintf(timestr,"%02d:%02d:%02d",now->tm_hour ,now->tm_min ,now->tm_sec );
sprintf(ms10,"%02d",centisec());
printf("%s %s.%s %s",datestr,timestr,ms10,logstr);
flog=fopen(logfilename1,"a");
if (NULL!=flog) {
fprintf(flog,"%s %s.%s %s",datestr,timestr,ms10,logstr);
if (ftell(flog)>MAXLOGSIZE) {
fclose(flog);
if (rename(logfilename1,logfilename2)) {
remove(logfilename2);
rename(logfilename1,logfilename2);
}
flog=fopen(logfilename1,"a");
if (NULL==flog) return;
}
fclose(flog);
}
}
void Log(const char *pszFmt,...) {
va_list argp;

Lock(&cs_log);
va_start(argp,pszFmt);
LogV(pszFmt,argp);
va_end(argp);
Unlock(&cs_log);
}
//Log}
int main(int argc,char * argv[]) {
int i;
#ifdef WIN32
InitializeCriticalSection(&cs_log);
#else
pthread_mutex_init(&cs_log,NULL);
#endif
for (i=0;i<10000;i++) {
Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);
}
#ifdef WIN32
DeleteCriticalSection(&cs_log);
#else
pthread_mutex_destroy(&cs_log);
#endif
return 0;
}
Roy_Smiling 2011-09-22
  • 打赏
  • 举报
回复
确定内存够用,确定指针没有乱指。
panpan1202 2011-09-22
  • 打赏
  • 举报
回复
点调试,出现对话框,对话框显示源程序的路径,我点确定就是没有反应
那要如何调试啊?
淡然一笑 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zhang20072844 的回复:]
多输出一些调试信息,看看记录,看看结果和自己预想的有什么区别,然后精确找到问题在那里
[/Quote]
生成一个debug.txt,查看代码执行情况!
AndyZhang 2011-09-22
  • 打赏
  • 举报
回复
多输出一些调试信息,看看记录,看看结果和自己预想的有什么区别,然后精确找到问题在那里
Mdesigner 2011-05-31
  • 打赏
  • 举报
回复
最好把问题说的具体一点~~
panpan1202 2011-05-31
  • 打赏
  • 举报
回复
额 或者能否给我一些关于如何记录查看错误日志的资料之类的 非常感谢啊
panpan1202 2011-05-31
  • 打赏
  • 举报
回复
我这个的错误就是提示 acess violation之类的 然后调试就出现上述问题了
panpan1202 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
第一记录一下日志,特别是错误日志,好知道你哪里可能出错
第二,对于一些长时间计算的程序,一定要设计考虑突发问题的数据恢复或可以接续计算的问题
[/Quote]

这个错误日志从哪里看啊 抱歉 我就会基本的 程序还是在理解原有的基础上自己稍微改变状况添加的 谢谢啊
是不是出错的时候提示的:。。。内存不能read之类的 日志?
soul850224 2011-05-31
  • 打赏
  • 举报
回复
最好 将日志打包
不是说每次
也差不多le..
panpan1202 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q191201771 的回复:]
运行debug版的把代码ATTACH上去
[/Quote]
额 没搞清楚 你的意思是?抱歉啊,能否详细说明下 谢谢
soul850224 2011-05-31
  • 打赏
  • 举报
回复
错误日志 很重要..
bdmh 2011-05-31
  • 打赏
  • 举报
回复
第一记录一下日志,特别是错误日志,好知道你哪里可能出错
第二,对于一些长时间计算的程序,一定要设计考虑突发问题的数据恢复或可以接续计算的问题
就想叫yoko 2011-05-31
  • 打赏
  • 举报
回复
运行debug版的把代码ATTACH上去
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧