gdb가 명령 기록을 저장하도록하려면 어떻게해야합니까?


195

gdb명령 기록을 저장하도록 어떻게 설정 합니까? 새 gdb세션을 시작할 때 화살표 위로 키를 사용하여 이전 세션의 명령에 액세스하고 싶습니다.


1
참고 : .gdbinit파일은 Linux의 사용자가 아닌 다른 사람이 쓰기 방지해야합니다.
urzeit

@ urzeit-우분투와 같은 배포판에서 잃어버린 원인이라고 생각합니다. 기본적으로 누구나 다른 사람의 홈 디렉토리에 들어갈 수 있습니다.
jww

@jww 시스템이 .gdbinit사용하는 기본값이나 홈 디렉토리에 대한 다른 제한 사항에 관계없이 권한이 올바르게 설정되지 않으면 파일이 처리되지 않습니다.
urzeit

@urzeit .gdbinit파일 을 만들지 만 그렇지 않은 경우은 umask과 같은 정상 값으로 설정되지 않았 음을 의미합니다 022. 그런 다음 다중 사용자 시스템에서는 .gdbinit파일 보다 큰 문제가 있습니다.
Kaz

답변:


283

짧은 답변: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit


긴 대답 :

명령 기록은 GDB 매뉴얼 22.3 명령 기록 에서 다룹니다 . 파일을 작성 $HOME/.gdbinit하고 권한을로 변경 한 0600후 다음 컨텐츠를 추가하십시오.

set history save on

다음과 같이 저장된 과거 명령 수를 설정할 수 있습니다. 명령은 "gdb가 기록 목록에 유지하는 명령 수를 설정합니다. 기본값은 환경 변수 GDBHISTSIZE의 값이거나이 변수가 설정되지 않은 경우 256입니다. GDBHISTSIZE의 숫자가 아닌 값은 무시됩니다. size가 무제한이거나 GDBHISTSIZE가 음수이거나 빈 문자열이면 gdb가 히스토리 목록에서 유지하는 명령의 수는 무제한 입니다. "

set history size <size>

관련 명령은 set history remove-duplicates <count>입니다. "명령 기록 목록에서 중복 기록 항목 제거 제어" 로 설명 합니다. count가 0이 아닌 경우 gdb는 마지막 개수 기록 항목을 다시보고 현재 항목과 중복되는 첫 번째 항목을 제거합니다. count가 무제한이면이 lookbehind가 제한되지 않습니다. count가 0이면 중복 기록 항목 제거가 비활성화 됩니다. "

set history remove-duplicates <count>

기본적으로 gdb는 기록을 현재 디렉토리의 ./.gdb_history 파일에 저장합니다 . 명령 히스토리가 현재 디렉토리에 의존하지 않게하려면 다음도 포함하십시오.

set history filename ~/.gdb_history

4
방금 이것을 직접 찾아서 공유 할 것이라고 생각했습니다.
Frank

3
다음에는 비 커뮤니티 위키와 같은 자체 답변 질문을 작성하는 것이 합법적입니다. :)
Greg Hewgill

@Frank 어떻게 입력하면 n위로 화살표 키를 사용하면로 시작하는 이전 명령이 모두 표시됩니다 n.
SIFE

GDB 8.0.1에서 이것은 특별한 파일 권한없이 작동하는 것으로 보입니다.
Ryan1729

7

여전히 문제가 발생하면 HISTSIZE 환경 변수가 적절한 숫자인지 확인하십시오. 광산은 비어 있었고 gdb의 "기록 크기"설정은 기본적으로 0입니다.

추가

export HISTSIZE=100000000

~ / .bashrc에 모든 것이 팽창합니다.

gdb 내부에서 "쇼 이력"을 수행하여 gdb 이력 설정을 확인할 수 있습니다.

gdb$ show history
expansion:  History expansion on command input is off.
filename:  The filename in which to record the command history is "/home/xiao/.gdb_history".
save:  Saving of the history record on exit is on.
size:  The size of the command history is 100000000.

로부터 문서 :

기록 크기 크기 설정
설정 내역 크기 제한
설정 GDB는 기록 목록에 유지 명령의 수. 기본값은 환경 변수 HISTSIZE의 값이거나이 변수가 설정되지 않은 경우 256입니다. 크기가 무제한이면 GDB가 기록 목록에서 유지하는 명령의 수는 무제한입니다.


나는 같은 문제가 있었다. set history size 100.gdbinit 파일을 넣었음에도 불구하고 HISTSIZE 환경 변수는 여전히 히스토리 크기를 0으로 설정했습니다. 문제는 gdb가 HISTSIZE를 무제한으로 설정할 수 있다는
DavidW

gdb의 HISTSIZE 버그는 2015 년 6 월 현재 수정되었지만 이 변경 사항이 시스템에 아직있을 가능성은 없습니다. 한편, HISTSIZE설정되어 있으면> 0이어야합니다. 그렇지 않으면 gdb가 기록을 비활성화합니다.
Nate R.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.