編輯感謝大家的意見。我想我的問題有點模糊。因此,我接受了一個明智的答案,並選擇了2個小時的頑固退出(9)調試並找到了,或者至少刪除了兩個錯誤,現在我自豪地解決了一個困難的謎題...... ;-)用C源代碼查找可能出現的問題的工具和方法
I在http://www.spoj.pl上投入了大量時間解決問題的解決方案,該程序在本地處理了我自己創建的所有測試樣本以及問題描述中的樣本。
但是,程序會在服務器上以SIGSEGV
中止。在那裏,我上傳了C99 strict
語言選項。
編輯:讓我再次清楚地指出,SIGSEGV
如何發生絕對沒有暗示。我擁有的唯一信息就是它發生了。感謝@Oli Charlesworth指出這一點。
在本地,我已編制既
gcc -Wall -Wextra -std=c99 -o prog prog.c
和
gcc -Wall -Wextra -m32 -std=c99 -o prog prog.c
,一切工作正常。 64位版本是在普通的Debian擠壓amd64系統上編譯的,-m32
版本是在Debian Lenny amd64系統上(但因爲Squeeze與-m32
斷開)。
valgrind -v
對我的程序也很完美。
我所有的malloc
和calloc
確保返回值不爲零。除了tsearch
,我除了常用的標準功能外沒有其他用途。
我想收集一些關於如何找出問題的指針。 (如果有什麼,但假設輸入有意想不到的屬性)
你使用gdb嗎? – Hgeg
在程序崩潰之前,你能看到程序的輸出嗎?即你可以添加一些'printf()來查看問題出現在哪裏? –
@Hgeg:不,當我的系統運行良好時,是否可以將它用於我的優勢? –