看板 PttCurrent 關於我們 聯絡資訊
我定義一堆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