gdb는 로그 파일을 어디에 저장합니까?

gdb는 로그 파일을 어디에 저장합니까?

이 부분은 다음으로 시작됩니다.gdb가 별칭을 좋아하지 않는 이유는 무엇입니까?

이제 나는 다음과 같은 주장을 합니다.

gdb firefox-esr
(gdb) set logging file my-firefox-esr-1802018.log
(gdb) set pagination 0
(gdb) show logging 
Future logs will be written to firefox-esr-020818.log.
Logs will be appended to the log file.
Output will be logged and displayed.
(gdb) run --safe-mode

그것이 추락했을 때 나는 그랬습니다 -

(gdb) bt
(gdb) thread apply all bt

모든 스레드와 그 안의 출력 표시가 완료되면

(gdb) quit

하지만 이제 /home/shirish에 있으면 로그 파일을 볼 수 없습니다. 전체 경로를 제공해야 합니까?

답변1

set logging file기본적으로 in 지시문은 gdb현재 디렉터리에 씁니다.

firefox-esr따라서 귀하의 예에서는 사용 중인 사용자에게 해당 디렉토리에 대한 쓰기 권한이 있는 경우 로그 파일이 디렉토리에 기록됩니다.

따라서 대답은 '예'입니다. 홈 디렉터리에 로그 파일을 쓰려면 전체 경로를 제공해야 합니다 set logging file.

바라보다 gdb가 파일로 다시 추적당신의 일을 할 수 있는 재미있는 트릭:

alias bt='echo 0 | gdb -batch-silent -ex "run" -ex "로그 재정의 설정" -ex "로그 파일 설정 gdb.bt" -ex "로깅 설정" -ex "페이징 끄기 설정" -ex " SIG33 pass nostop noprint 처리 " -ex "echo backtrace:\n" -ex "backtrace full" -ex "echo \n\nregisters:\n" -ex "info Registers" -ex "echo \n\n현재 명령:\ n" -ex " x/16i \$pc" -ex "echo \n\n스레드 역추적:\n" -ex "스레드가 모든 역추적을 적용합니다." -ex "로그아웃 설정" -ex "Exit" --args '

bt $crashing_application

당신은 또한 볼 수 있습니다젠투를 사용하여 역추적

답변2

gdb가 항상 pwd에 gdb.txt 또는 사용자 정의 로그 파일을 생성하는 것은 아닙니다. gdb 터미널에서 "setloggingon" 명령을 실행하여 명시적으로 지정해야 합니다. 그래야만 출력이 기록됩니다.

관련 정보