하는 방법이 있는 디버그 하위 프로세스를 사용하여 향후 버전에는 교환하는 데이터?

StackOverflow https://stackoverflow.com/questions/1624932

문제

내가 사용하여 Eclipse/향후 버전에는 교환하는 데이터 방법을 찾기 위해 노력하고 코드를 디버깅을 사용하는 subprocess.Popen 을 만드는 자식 프로세스:할 수 있는 디버깅하는 자식 프로세스를 만들어집니다.문제는 나를 찾을 수 없는 방법으로 디버깅하는 전체 프로세스 경계,그리고 나는 그것이 실제로 가능하지 않습니다.여전히,당신은 결코 알지 못할 때까지 요청,그리고 나 하고 있다!

약간의 배경:나는 복잡한 빌드 프로세스에 의해 구동 Waf 를 호출하는 우리의 장치를 테스트하여 전화 으로 필요하다:내가 원하는 훅으로 이러한 프로세스를 디버깅 단위 테스트 실패입니다.나는 알 수 있었을 실행하려고 코를 직접 그러나 문제는 환경을 구성해야에 대한 우리의 모듈을 올바르게 로드은 상당히 복잡하고 싶지 않아 중복되는 코드를 하는 경우에 저는 그것을 피할 수 있습니다.

나는 알 원격 디버깅 모드지만 그게 아름 때문에 해결책을 찾기 위해 노력하겠습니다 호출하여 디버거에서 원격 과정입니다.누구나 알고있는 경우 방법이 무엇을 하려고 해요 그것은 많이 주시면 감사하겠습니다.

도움이 되었습니까?

해결책

나는 보이지 않는 향후 버전에는 교환하는 데이터는 그것을 할 수 있도(할 수 있습 PyDbg 및 WinDbg)지만,그것은 다음과 같 gdb 할 수 있습니다: http://wiki.python.org/moin/DebuggingWithGdb.

다른 팁

무언가를 발견했는 해결 방법의 당신을 위해 일할 수 있습니다.

당신처럼,나는 처음으로 발견되는 원격 디버깅 옵션의 수동으로 삽입 통화 pydevd.settrace()에서 원하는점.하지만 제가 알게되는 이후의 향후 버전에는 교환하는 데이터 중단점을(즉사람들에 의해 만들어 클릭하면 왼쪽 여백)순다.그래서 그것은 당신이 필요 첫 번째 명시적 settrace 호출을 설정하는 디버깅을 원격에 대한 세션하는 과정,그리고 나중에만 사용하여 일반적인 디버거점.

또한,수정할 수 있습니다 settrace 호출되지 않도록 실제로 일시 중단하는 프로세스:

import pydevd
pydevd.settrace(suspend=False)

그래서 위의 코드를 삽입하 어딘가에 초기에의 초기화 하위 프로세스와 사용할 수 있습니다.의 비트는 여전히 해킹,하지만 그것보다 확실히 더 나은 수동 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top