作者lihgong (Q.Q)
看板PttCurrent
标题Re: [问题] 请问一下断线的问题...
时间Sun Feb 8 15:32:33 2004
我定义一堆DEBUGx 的使用者状态
安插在程式码里面
一挂掉看使用者列表 DEBUGx 检查程式到哪里中断
trace的结果, 好像 getkeep() 有点怪怪的
里面是个堆叠, 理论上应该不会出问题
会爆掉可能是搜寻堆叠用的回圈
我加上一点程式码记录堆叠的大小
起码避开回圈跑不出来的问题
keeploc_t *
getkeep(char *s, int def_topline, int def_cursline)
{
static struct keeploc_t *keeplist = NULL;
static int stack_depth = 0;
struct keeploc_t *p;
int tmp = stack_depth;
if (def_cursline >= 0)
for (p = keeplist; p
&& tmp; p = p->next) {
if (!strcmp(s, p->key)) {
if (p->crs_ln < 1)
p->crs_ln = 1;
return p;
}
tmp--;
}
else
def_cursline = -def_cursline;
p = (keeploc_t *) malloc(sizeof(keeploc_t));
p->key = (char *)malloc(strlen(s) + 1);
strcpy(p->key, s);
p->top_ln = def_topline;
p->crs_ln = def_cursline;
p->next = keeplist;
keeplist = p;
stack_depth++;
return keeplist;
}
目前还在追踪可能导致断线的片段
by the way
上一篇调编译器恶搞的结果
好像没什麽差别 (  ̄▽¯)σ"
※ 引述《lihgong (Q.Q)》之铭言:
: 我的站上也遇到同样的问题
: 颇严重
: 但是我每次用 make -DGDB 作出来的 process 怎麽弄都不当
: 於是我开始乱搞
: 把 ~/pttbbs/pttbbs.mk 拿出来玩...
: CFLAGS+= -O2 -Os -fomit-frame-pointer -fstrength-reduce \
: -fthread-jumps -fexpensive-optimizations \
: $(PTT_CFLAGS)
: LDFLAGS+= -O2 $(PTT_LDFLAGS) $(PTT_LIBS)
: 改成... (拿掉 -Os, 把 -O2改-O3)
: CFLAGS+= -O3 -fomit-frame-pointer -fstrength-reduce \
: -fthread-jumps -fexpensive-optimizations \
: $(PTT_CFLAGS)
: LDFLAGS+= -O3 $(PTT_LDFLAGS) $(PTT_LIBS)
: 我去查了 gcc 的 man-page
: -Os 是对执行码的大小作最佳化, 我猜这样可以让记忆体省着用, 所以 ptt 把它打开
: -O3 是比 -O2 开启更多最佳化选项(加速程式执行)
: 因为我用 OpenPtt的时候预设是打开, 所以就开吧 :p
: 我测试结果是这样的 (样本数很少, 随便看看就好)
: 拿掉 -Os 会稳很多 (怪...)
: -O2 换 -O3 没太多影响
: 嗯... 继续测试中 @.@
: ※ 引述《oudinot (holmes)》之铭言:
: : 请教一下各位长辈们..
: : 我用pttcurrent(source code保持最新)
: : 每当某个板有转信进来时
: : 正在阅读那个板的使用者就会被断线
: : 比方说
: : 我转tw.bbs.comp.hardware的news进来站内的hardware板
: : bbsnnrp执行时
: : news转进来hardware板内
: : 此时
: : 若有使用者正在hardware板的文章列表上下移动
: : 就会被断线
: : 请问一下是什麽问题呢?
: : 如果有需要其他资讯
: : 我会马上贴上来
: : 谢谢各位长辈...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.140.10