2011-06-12 4 views
2

나는 ctypes를 사용하여 마운트 시스템 호출을 통해 퓨즈 파일 시스템을 마운트하기위한 Python 프로그램을 작성하고 있습니다. 이제 마운트 시스템 호출에서 잘못된 인수 오류가 발생합니다. 나는 모든 논점을 점검했고 그들은 옳은 것처럼 보인다. strace가 이러한 유형의 오류를 디버깅하는 데 사용될 수 있다고 친구로부터 들었습니다. 누군가가 strace를 사용하여 문제를 디버깅하는 방법을 안내해 줄 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.Strace : 잘못된 인수 오류를 디버그하는 방법

좀 더 일반적인 질문을 드리겠습니다. 어떻게 strace를 사용하여 동일한 문제를 디버깅 할 수 있습니까?

+0

IDLE과 같은 IDE와 함께 제공되는 Python 디버거를 사용할 수없는 이유는 무엇입니까? – Pwnna

+0

나는 IDE를 한번도 사용 해본 적이 없다. – hue

답변

1

strace을 사용하는 것은 매우 쉽지만 원하는 정보를 제공하지 않을 수 있습니다.

당신을 부르는 시스템을 알고 있기 때문에

가장 간단한 것은 할 것, 후 위치 :

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

(파이썬 스크립트 mount /dev/... 교체). -f은 아이들 (여기서는 불필요 함)을 따르고, -e trace=mount은 에 mount 시스템 호출 만 추적하도록 지시합니다. 자세한 내용은 -v을 참조하십시오. 여기

샘플 출력 :

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

그래서 당신은 그들이 커널 및 반환 코드에이를 것으로 형태로 기본적으로 전달 된 인수를 참조하십시오.

EINVAL의 "설명"을 얻을 수는 없지만 소스 매개 변수에 잘못된 수퍼 블록이있는 경우에만 발생하기 때문에 메시지가 더 명확하게 나타납니다 (이국적인 것을하지 않는 한). 어떤 경우에는 나열된 다른 가능성이 있습니다 here).

+0

감사합니다 매트는 도움이되었습니다 .. – hue

관련 문제