- 論壇徽章:
- 0
|
10可用積分
我寫(xiě)了一些c程序,看似沒(méi)有問(wèn)題,并且運(yùn)行正常.但等我把他們編譯進(jìn)php的時(shí)候,運(yùn)行我寫(xiě)的模塊就報(bào).Segmentation fault,
這個(gè)時(shí)候我知道肯定是我剛才寫(xiě)的程序出問(wèn)題了,出現(xiàn)了指針越界或操作了空指針.
因?yàn)樵诔绦蛄啃〉那闆r下這錯(cuò)誤也許被容忍了,但編譯進(jìn)了php后問(wèn)題后一點(diǎn)小錯(cuò)誤就會(huì)導(dǎo)致Segmentation fault運(yùn)行失敗!
昨天我花了好幾個(gè)小時(shí)才發(fā)現(xiàn)問(wèn)題所在,惱火啊。
要是在我自己測(cè)試(編譯成可執(zhí)行文件,還沒(méi)有編譯進(jìn)php)的時(shí)候就抱錯(cuò)的話,我知道可以用gdb來(lái)調(diào)試,很容易找出錯(cuò)誤所在,但象這種編譯進(jìn)了php才抱錯(cuò)的情況,怎么查啊!
所以想請(qǐng)教下這樣的情況應(yīng)該怎樣來(lái)查錯(cuò),類(lèi)似php這樣的大程序有沒(méi)有什么code文件可以來(lái)查錯(cuò);蛘邞(yīng)該怎樣來(lái)查php中的Segmentation fault錯(cuò)誤 |
最佳答案
查看完整內(nèi)容
分享一下我調(diào)程序的方法。不過(guò)我的程序一般不是很大,找BUG時(shí)最大的程序可能時(shí)4,5千行吧。因?yàn)槲业某绦蚨际橇鞒绦缘,首先就是判斷程序能夠走到哪里就over了。那么這個(gè)可以采用分析和估計(jì)的方法,實(shí)在不行就折半吧,哈哈。不過(guò)不推薦這樣,畢竟你自己的程序你應(yīng)該比較熟悉。如果找到程序大致出問(wèn)題的地方,然后再對(duì)這個(gè)地方進(jìn)行微調(diào)。采用簡(jiǎn)單的Printf就可以。因?yàn)槲业某绦驅(qū)儆诿钚械模旧砭褪切枰诮K端下調(diào)試的。
|