답변:
로깅을 활성화해야합니다.
(gdb) set logging on
사용할 파일을 지정할 수 있습니다.
(gdb) set logging file my_god_object.log
그리고 현재 로깅 구성을 검토 할 수 있습니다.
(gdb) show logging
set logging file my_god_object.log
전에 설정해야하지 set logging on
않습니까?
tail -f
와 awk
오늘 정말 도움이되었다. 감사!
run
명령을 통해 gdb의 출력을 파일로 리디렉션 할 수 있음을 발견했습니다 .
(gdb) run > outfile
@qubodup의 답변 확장
gdb core.3599 -ex bt -ex quit |& tee backtrace.log
-ex
스위치는 GDB 명령을 실행합니다. 따라서 위의 코드는 코어 파일을로드하고 bt
명령을 실행 한 다음 quit
명령 을 실행합니다. 출력은 backtrace.log
화면에 기록됩니다 .
또 다른 유용한 gdb 호출 (모든 스레드의 로컬 변수로 스택 추적 제공)은 다음과 같습니다.
gdb core.3599 -ex 'thread apply all bt full' -ex quit
gdb -c core.3599 ...
에서 https://sourceware.org/gdb/onlinedocs/gdb/Logging-Output.html :
gdb 명령의 출력을 파일에 저장할 수 있습니다. gdb의 로깅을 제어하는 몇 가지 명령이 있습니다.
set logging on
로깅을 사용하도록 설정.
set logging off
로깅을 비활성화합니다.
set logging file file
현재 로그 파일의 이름을 변경합니다. 기본 로그 파일은 gdb.txt입니다.
set logging overwrite [on|off]
기본적으로 gdb는 로그 파일에 추가됩니다. 대신 로그 파일을 덮어 쓰도록 로그온을 설정하려면 덮어 쓰기를 설정합니다.
set logging redirect [on|off]
기본적으로 gdb 출력은 터미널과 로그 파일 모두로 이동합니다. 출력이 로그 파일로만 이동하도록하려면 리디렉션을 설정합니다.
show logging
로깅 설정의 현재 값을 표시합니다.
여기에 여러 가지 답변이 있습니다. 그들은 정확합니다. 한 번에 모든 출력을 수집하는 데 도움이되는 명령을 추가하고 싶습니다. 이것은 거대한 역 추적을 수집 할 때 정말 유용합니다. 로깅 구성을 수행하기 전에 다음을 수행하십시오.
(gdb)set height 0
이 기사에서 찾았습니다 : https://askaralikhan.blogspot.com/2016/05/gdb-all-threads-bt-to-file.html?showComment=1584614942454#c4584028195226351332
set logging redirect on
.