2009-06-12 4 views
1

프로그래머를 디버깅 할 때 GDB에 나타나는 쓸모없는 정보가 너무 많습니다. 이런 종류의 정보는 아이폰 프레임 워크에서 올 수 있습니다. 그것은 내 코드에 의해 기록되지 않습니다. 이iphone 개발 : gdb에 너무 많은 로그가 있습니다

노드 48 TrialMT 같은 정보 (102102101101)

노드 58 TrialMT (102102101101)

노드 69 TrialMT (102102101101)

노드 72 TrialMT (102102101101)

너무 많은. 그래서 나는 내 기록을 못 찾는다.

GDB 로그를 파일로 내보낼 수있는 방법이 있는지 알고 싶습니다. 나중에 파일에서 내 로그 정보를 찾을 수 있습니다.

감사합니다.

답변

1

디버거 콘솔에 GDB 명령을 입력 할 수 있습니다. 여기서 stdout 및 stderr 파일 설명자를 기본 로그 파일로 재설정 할 수 있습니다.

(gdb) call (void)close(1) 
(gdb) call (void)close(2) 
(gdb) call (int)open("/tmp/out.log", 0x201, 0644) 
$1 = 1 
(gdb) call (int)dup(1) 
$2 = 2 
(gdb) continue 
+0

유용한 정보에 GDB 콘솔 기반을 사용하기로 결정했습니다. 나는 gdb 명령에 익숙하지 않다. –

+0

"call"명령을 사용하면 실행중인 프로세스에서 함수를 호출 할 수 있습니다. 실행 파일에서 이러한 함수를 직접 호출하여 동일한 효과를 얻을 수 있습니다 (예 : 귀하의 주요 기능. 표준 유닉스 파일 처리 함수 일 뿐이다. 파일 설명자는 stdin = 0, stdout = 1, stderr = 2입니다. 그래서 1과 2를 닫은 다음 첫 번째 자유 파일 디스크립터 인 1로가는 새 파일을 엽니 다. 우리는 방금 파일을 닫았 기 때문에 1입니다. 그런 다음 dup은 파일 디스크립터를 다음 사용 가능한 디스크립터에 복제합니다. 2. – nschmidt

관련 문제