我正在寫一個python程序通過使用ctypes掛載系統調用來掛載fuse文件系統。現在它在mount系統調用中給出無效的參數錯誤。我檢查了所有的論點,他們似乎是正確的。我從朋友那裏聽說strace可以用來調試這些類型的錯誤。有人能指導我如何使用strace來調試問題。任何幫助,將不勝感激。提前致謝。Strace:如何調試無效的參數錯誤
讓我提出更通用的問題,我怎樣才能用strace來調試c語言中的同一個問題。
我正在寫一個python程序通過使用ctypes掛載系統調用來掛載fuse文件系統。現在它在mount系統調用中給出無效的參數錯誤。我檢查了所有的論點,他們似乎是正確的。我從朋友那裏聽說strace可以用來調試這些類型的錯誤。有人能指導我如何使用strace來調試問題。任何幫助,將不勝感激。提前致謝。Strace:如何調試無效的參數錯誤
讓我提出更通用的問題,我怎樣才能用strace來調試c語言中的同一個問題。
使用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所列)。
謝謝你有用的地毯.. – hue 2011-06-12 19:22:27
爲什麼不能只使用一個附帶IDE的Python調試器,如IDLE? – Pwnna 2011-06-12 13:27:50
我從來沒有用過IDE,我會試試看。 – hue 2011-06-12 14:10:17