※ 引述《HuangJC (吹笛牧童)》之銘言:
: eval?
: 有錯誤,格式不太對 :P
: 然後我用 str_replace 開始調,調半天,快調出來時已經點燃龜藍趴火了;不,是小宇宙
:
: 突然靈機一閃,我好像看過 serialze 嘛!!
var_export 也是!!
幸好我先想到 serialze,不然用這個字串長很多 :P
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 61.219.65.16
: → kylekai :比起直接輸出在畫面上干擾輸出好多了... 07/16 18:36
其實我想學 remote debug,不知會不會較好
: → HuangJC :謝謝;那 var_dump 太相近了,又有何意義? 07/16 18:47
: → HuangJC :不過比起單機板程式,主管要求我修BUG時做到無縫運轉. 07/16 18:48
: → HuangJC :就是不能給user看到 BUG,我想 log to file 很有意義 07/16 18:49
: → kylekai :不能看到 Bug 最簡單就是把 display_error = off .. 07/17 00:19
: → kylekai :不過那不叫做看不到 bug ..只是不輸出錯誤訊息.. 07/17 00:19
講一下今天的 case
因為 phpbb2 的資料欄位太少
我決定在 DB 內新增一個欄位
這個欄位將加強原有欄位的訊息
舉例來說,本來的 timezone 是數字,GMT +? 的一個數字
但我想儲存國家
比如,GMT+8 有兩三個國家(?台灣,日本?大概這意思)
我不只想顯示 GMT+8,我想顯示 Taiwan
如果我程式一寫就對,無縫 update,那也就算了
不過我犯了幾個錯誤
1.我寫了個 Parser,讀到 'Taiwan',變成 8
2.我把 8 拿去覆寫原來的數字
3.如果今天 bbs 跑到一半,我才新增欄位及程式
有些舊 bbs user 因為這欄位是 default 值,其內為空白
parser 解到空白,回傳 false,crash(白畫面),or 0
4.false or 0 被覆蓋給原來的 GMT 時間,結果原本正確的台灣時間又變格林威治
5.因為有多台機器(至少有 local 及機房兩台,local 寫好透過 CVS 轉送機房)
所以 local 有新增欄位及程式
但其他同事如果先 check out 程式,沒有新增欄位,可能發生..
sql insert 指令硬要塞資料進入還沒新增的欄位;crash,白畫面
6.sql select 硬要讀不存在的欄位;crash,白畫面
7.讀不出來的欄位,其變數就是 unset,使用 unset 變數,可能預設為 0
總之,我不該存取未存在欄位
也不該用 unset 變數去運算,反而蓋掉原本正常儲存的數字
不加 feature 還好,一加全亂
以上我不知是不是把 error 改 warning 全可解決...
應該不太行,只有 GMT 時間是小事
其他不存在欄位存取,那整道 mysql 指令就是 return false
也就造成 bbs user 永遠無法登入 XD
那就算暫時無法登入沒關係,沒白畫面那麼糟好了
當我要 debug 時,我一直搞不懂問題出在哪裏
要知道我 local 可是跑得很順咧
所以,我就好想在程式中設中斷,印變數 XD
print_r($var);exit;
這是我最愛做的事
然後全世界的 user 都看到白畫面,把我幹到開花..Q_Q
所以,remote debug 是不是容易點?
啊!我想到了,鎖 IP
只有我這台電腦可以啟動 DEBUG CODE
if ( ip==MyIP ){
print_r($var);exit;
}
以及
if ( ip==MyIP )
define(DEBUG,1); //phpbb2 有支援裏面的 debug
這樣是不是可以安全點 XD
不然我實在很難無縫 debug..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.219.65.16