2013-05-29 4 views
1

나는 X 유형의 객체에서 호출 될 때 stderr에 유용한 것을 인쇄하는 함수 dump()을 가지고있다. 나는이 라인을 따라 GDB 꽤 - 인쇄 값을 설명하는 문자열을 반환하는 몇 가지 명령의 출력을 이용하여 스크립트, 뭔가를 쓰기 위해 노력하고있어예쁜 인쇄를 위해 stdout/stderr 인쇄물을 문자열로 사용할 수 있습니까?

: 불행하게도

return gdb.execute(str(self.val) + '.dump()', False, True) 

이 저를 제공합니다

경고 : 전류 출력 프로토콜

가 어떻게이 문제를 해결할 수 리디렉션을 지원하지 않습니다? 이것이 stderr 출력을 얻는 올바른 방법일까요?

답변

2

귀하의 질문에서 완전히 명확하지는 않지만, "덤프"는 gdb의 Python 개체에있는 메서드가 아니라 프로그램의 메서드라고 가정합니다.

이 경우 내가 원하는 것을 달성하기 위해 생각할 수있는 유일한 방법은 stderr을 일시적으로 문자열 (iostreams 또는 libc와 동등한 문자열 사용)로 리디렉션하고, 함수를 호출 한 다음 stderr를 복원하는 것입니다. 마지막으로 gdb에 결과 문자열을 사용하게하십시오.

이것은 매우 원형입니다. "덤프"기능을 변경하는 것이 더 간단 할 것입니다.

보통 pretty-printers가 열등한 함수 호출을하지 않는 것이 가장 좋습니다. 첫째, 이것은 ("break dump"와 "bt"와 같은) 일부 시나리오에서 이상하게 작동하거나 이상하게 작동 할 수 있습니다. 또한 코어 파일과 함께 예쁜 인쇄를 사용하지 못하게합니다.