作者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