2012-12-02 5 views
0

나는 파이썬과 gtk3에서 텍스트 편집기를 쓰고 있어요 내가 창을 닫을 때 어디 선가 입심 내에서 모호한 경고가 계속 :디버깅 파이썬 gtk3 응용 프로그램

/usr/lib/python2.7/dist-packages/gi/types.py:47: Warning: invalid (NULL) pointer instance 
    return info.invoke(*args, **kwargs) 

나는이 디버깅 할 수 있습니까? gdb에서 실행 해 보았는데, g_logv에서 중단 점에서 뭔가를 배울 수 있기를 희망했지만 중단 점을 트리거하지 않고 경고가 나타납니다. https://bugzilla.gnome.org/show_bug.cgi?id=670507 때문에 로그 처리기를 쉽게 바꿀 수 없습니다.

나는 그 시점에서 파이썬 백 트레이스를 항상 출력하도록 메시지에서 참조 된 파이썬 파일을 변경하려고 시도했으나 오류 발생 여부와 상관없이 모든 gobject 메소드 호출 따라서 결과를 해석하기가 어렵고 어떤 포인터가 null인지 알려주지 않습니다.

+0

프로젝트의 개별 수업에 대한 몇 가지 테스트를 작성하십시오. 범인을 격리시키는 걸 도울 수 있습니다. – XORcist

+0

올바른 함수 ('g_log' 또는'g_logv'?)에 중단 점을 설정 하시겠습니까? Python 프로그램에서'g_log'를 위반하면 잘 작동합니다. – ptomato

+0

이것은 개별 클래스 테스트가 비효율적 인 까다로운 일 중 하나입니다. 내 위젯을 GtkNotebook에 삽입하려고 시도 할 때까지는 제대로 작동했습니다. 그리고 내가 그것을 일으키는 것으로 보이는 것을 다시 작성하려고하면, 경고는 다른 곳에서 작곡합니다. – realh

답변

0

gdb를 사용하려면 G_DEBUG 환경 변수를 "fatal-warnings"(G_DEBUG=fatal-warnings ./your-script.py)으로 설정하여 스크립트를 실행하십시오. GLib 설명서의 Running GLib Applications 섹션에 설명서가 있습니다.

+0

나는 그것을 생각해야했다! 하지만 시도해 본 결과 gdb에서도 조용히 종료됩니다 .--(나는 실수로 같은 객체를 파괴하려는 반복적 인 시도를 감지 할 내 파이썬에서 무언가를 트리거했을 때 중단 점을 설정하려고했습니다. 이제 어딘가에 도착할 수 있기를 바랍니다. – realh

+0

질문에 언급 한대로 GLib에서 경고가 나오지 않습니다. 또한 g_logv를 깨는 것이 효과적이지 않은 이유에 대해서도 설명합니다. – nemequ