2013-02-01 2 views
1

예쁜 프린터가 gdb에서 호출 될 때 주어진 변수가 유효한지 알 수있는 사람이 누구인지 알고 있습니까?python pretty print parse_and_eval

예를 들어 나의 예쁜 프린터 중 하나는 gdb.parse_and_eval을 사용하여 변수가 초기화되지 않은 경우 gdb가 충돌하게됩니다.

TestPrettyPrint::TestPrettyPrint(QWidget *parent) 
    : QMainWindow(parent) 
{ 
    ui.setupUi(this); 
    QFile f("C:/Log.txt"); 
} 

첫 번째 줄에 중단 점을 넣고 'f'를 검사 해보십시오. gdb가 충돌합니다. 'f'가 생성 된 후 중단 점을 넣으면 모든 것이 정상입니다.

모든 정보는

감사

+0

gdb가 중단되지 않아야합니다. 만약 그렇다면, 그것은 버그입니다. 최악의 경우 평가에서 오류가 발생했음을 나타내는 예외가 발생해야하며이를 catch해야합니다. –

답변

1

변수가 유효한지 여부를 알 수있는 방법이 없습니다 매우 도움이 될 것입니다.

먼저이 정보는 디버그 정보에서 사용할 수 없습니다. 정확히 말하면 DWARF에이 정보를 제공하는 GCC 확장이 있지만 잘 지정되지 않았고 실제로 작동하지 않습니다. 어쨌든 GDB에서 파이썬에 노출되지 않습니다.

두 번째로 정보가 사용 가능하더라도 문제를 해결하지 못합니다. 모든 메모리는 버그로 인해 휴지통에 빠질 수 있습니다.

대답은 예쁜 프린터를 적용하기위한 것입니다. 기존 "인쇄"설정을 사용하여 배출되는 쓰레기 양을 제한 할 수 있습니다.

gdb가 충돌하면보고해야하는 gdb 버그입니다. IIRC에는 재생 명령이 없지만 이미 bugzilla에 이런 것이 있다는 것을 알고 있습니다. 이것은 버그를 수정하기 위해 가장 중요한 것입니다.