2014-06-24 4 views
1

나는 C로 작성된 확장 모듈을 포함하는 파이썬 프로그램을 작성 중이다. 확장 모듈은 내 프로그램에서 계속 사용되는 함수를 정의한다.어떤 도구 (gdb? xcode? pdb? 등)를 사용하여 C 확장 Python 프로그램에서 메모리 누수를 찾을 수 있습니까?

내 프로그램의 어딘가에 메모리 누수가 있지만 찾을 방법을 모르겠습니다. 나는 시도했다 1) Valgrind 설치. 하지만 OSX Mavericks (10.9)부터 Valgrind는 OXS 10.7 (그리고 다소 불안정한 10.8)을 지원하기 때문에이 기능을 사용할 수 없습니다. 2) gdb 사용. 내 파이썬 코드에서 호출되는 C 함수에서 중단 점을 설정해야 할 것처럼 gdb python 스크립트를 실행할 수 없습니다. 나는 그것을하기 위해 python-debuginfo를 설치해야한다고 믿지만, 나는 할 수 없었다. 3) pdb 사용. 나는 pdb를 사용하여 c 코드를 디버깅하기 위해 무엇을해야할지 전혀 몰랐다.

내 프로그램에서 메모리 누수를 디버깅하는 데 사용할 수있는 유용한 도구가 있습니까?

답변

0

현재 Mac 개발 도구와 함께 제공되는 디버거는 이제 lldb이며 gdb를 대체합니다. 인터페이스는 gdb와 다소 비슷합니다. Homebrew을 사용하여 gdb를 설치할 수 있습니다.

C 확장을 디버깅하는 방법은 다른 모든 공유 라이브러리와 같습니다. 공유 라이브러리 (확장자)를로드하는 실행 파일 (파이썬)을 디버그하고 실행 파일이 공유 라이브러리를로드 한 후에 유효한 중단 점을 설정하십시오.

실행 lldb :

lldb /path/to/python -- your_python_script.py 

설정 일부 중단 점은 다음

(lldb) b some_source_file.c:4343 

(당신의 관련 중단 점으로 대체)를 실행하고, 디버거는 이제 중단 점

(lldb) r 

에서 중지됩니다 C 확장을 정상적으로 디버깅 할 수 있습니다.