2009-07-03 4 views

답변

4

그것은 일을 많이하지만 물론 당신이 특히 수행 할 수있는 모든 기호. 특정 버전의 Python 헤더 파일 (그리고 그것을 컴파일하는 데 사용되는 컴파일 옵션)을 살펴보십시오.이 파일은 PyObject를 구조체로 정의합니다.이 구조체는 먼저 유형에 대한 포인터를 포함합니다. 많은 매크로가 사용되었으므로 동일한 Python 소스 코드에서 컴파일을 실행하고 전처리 후에는 -E 옵션을 사용하여 비트를 만든 특정 C 코드를 참조 할 수 있습니다 당신은 코어 덤프에서보고 있습니다.

유형 객체는 그 이름 인 문자열 (char 배열)을 가지며 그 유형의 객체가 정확히 무엇인지 추측 할 수 있습니다. 직접 내용인지 또는 일부 내용인지 (길이, 즉 아이템의 수와 같은) 및 실제 데이터에 대한 포인터를 포함한다.

필자는 수퍼 디버깅을 수 차례 완료했습니다 (관련된 Python 버전에 대한 정확한 지식과 준비된 모든 사전 소스 &). 그리고 하루에 두 번씩 (나는 여전히 프리랜서 였고 한시간 씩 충전했다. 만약 내가 그런 작업에 입찰해야만했다면 적어도 20 시간을 말할 것이다.

IOW, 값어치있는 피클에서 유일한 방법입니다. 더하기 측면에서 보면 소스의 모든 라인을 암기 한 후에도 파이썬의 내부에 대해 더 많이 가르쳐 줄 것입니다. 행운을 빈다, 당신은 약간을 필요로 할 것이다! !!