2

ctypesを使用してマウントシステムコールを介してヒューズファイルシステムをマウントするPythonプログラムを作成しています。マウントシステムコールで無効な引数エラーが発生するようになりました。すべての引数を確認しましたが、正しいようです。strace を使用してこれらのタイプのエラーをデバッグできると友人から聞きました。strace を使用して問題をデバッグする方法を教えてもらえますか。どんな助けでも大歓迎です。前もって感謝します。

質問をより一般的なものにしましょう.straceを使用してc言語で同じ問題をデバッグするにはどうすればよいですか.

4

1 に答える 1

1

使用straceは非常に簡単ですが、必要な情報が得られない場合があります。

自分がどのシステムコールを求めているかがわかっているので、最も簡単なことは次のことです。

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

mount /dev/...( Pythonスクリプトに置き換えてください)。これは、冗長性の-fために子(おそらくここでは不要)をフォローすることであり、 syscallのみを追跡するように指示します。-v-e trace=mountstracemount

ここに出力例:

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

したがって、基本的にカーネルに到達する形式で渡された引数と、戻りコードが表示されます。

ただし、 「説明」は表示されませんがEINVAL、これはソースパラメータに無効なスーパーブロックが含まれている場合にのみ発生するため、メッセージはかなり明確です(よりエキゾチックなことをしている場合を除きます。この場合、他にもあります。ここにリストされている可能性)。

于 2011-06-12T16:07:09.097 に答える