2011-06-12 27 views
2

我正在寫一個python程序通過使用ctypes掛載系統調用來掛載fuse文件系統。現在它在mount系統調用中給出無效的參數錯誤。我檢查了所有的論點,他們似乎是正確的。我從朋友那裏聽說strace可以用來調試這些類型的錯誤。有人能指導我如何使用strace來調試問題。任何幫助,將不勝感激。提前致謝。Strace:如何調試無效的參數錯誤

讓我提出更通用的問題,我怎樣才能用strace來調試c語言中的同一個問題。

+0

爲什麼不能只使用一個附帶IDE的Python調試器,如IDLE? – Pwnna 2011-06-12 13:27:50

+0

我從來沒有用過IDE,我會試試看。 – hue 2011-06-12 14:10:17

回答

1

使用strace很容易,但它可能不會給你想要的信息。

既然你知道什麼是系統調用你之後,最簡單的事情是做:

strace -fv -e trace=mount mount /dev/sda1 /tmp 

(更換mount /dev/...你的Python腳本)。 -f是爲了追蹤孩子(這裏可能是不必要的),-v爲詳細,-e trace=mount指示strace只跟蹤mount系統調用。

樣本輸出這裏:

$ sudo strace -fv -e trace=mount mount /dev/sda1 /tmp 
mount("/dev/sda1", "/tmp", "ext2", MS_MGC_VAL, NULL) = 0 

所以你看,基本上形式傳遞的參數,他們將到達內核,並返回代碼。

雖然你不會得到EINVAL的「解釋」,但是隻有當source參數有一個無效的超級塊時纔會發生這種情況,所以這個消息是非常明確的(除非你正在做更特殊的事情,這種情況下還有其他可能性,如here所列)。

+0

謝謝你有用的地毯.. – hue 2011-06-12 19:22:27