GDB 위쪽 화살표가 작동하지 않습니다

GDB 위쪽 화살표가 작동하지 않습니다

비슷한 문제에 대해 많이 검색했지만 아무것도 찾지 못했습니다. gdb를 실행할 때 이전 명령을 살펴보는 데 위쪽 화살표를 사용할 수 없었습니다. 위쪽 및 아래쪽 화살표는 무시됩니다. 일부 설정을 변경한 후 이 동작을 관찰하기 시작했지만 정확히 어떤 설정이 변경되었는지 기억이 나지 않습니다.

~/.xinputrc파일이 없고 $TERM로 설정되어 있습니다 xterm.

답변1

기록 크기가 0이기 때문일 수 있습니다.

gdb 기록 크기를 확인할 수 있습니다.

(gdb) show history size
The size of the command history is 0.
(gdb) 

만약기록 최대 크기는 0입니다., 그 다음에위쪽 화살표물론 기록을 저장할 수 없기 때문에 작동하지 않습니다.

내가 찾은 주된 이유는 bash 환경 변수 HISTSIZE가 0이거나 비어 있기 때문입니다. 답답하다 생각하니까히스트 크기=(빈 값오른쪽) ~/.bashrc에서 bash 기록을 저장할 수 있습니다.무제한 입장, 하지만부작용은 gdb가 $HISTSIZE를 참조한 다음 gdb 기록 크기를 0으로 설정하는 것입니다.gdb 시작시.

그래서 당신은 넣을 수 있습니다히스트 크기=10000000~/.bashrc 및 위쪽 화살표에서 이제 작동합니다(경고하다: ~/.bash_history 백업HISTSIZE를 가지고 놀기 전에):

(gdb) show history size 
The size of the command history is 10000000.
(gdb) 

계속 고집한다면히스트 크기=~/.bashrc에서 비어 있으면 옵션은 ~/.bashrc에서 이 함수를 생성하는 것입니다.

gdb() ( HISTSIZE=70000000; /usr/bin/gdb "$@"; )

. ~/.bashrc다시 로드하려면 이제 변경되었습니다.

(gdb) show history size 
The size of the command history is 70000000.
(gdb) 

gdb를 종료한 후 원래 $HISTSIZE는 재정의되지 않습니다(즉, 무제한으로 비어 있는 상태로 유지). gdb 함수는 하위 쉘을 사용하기 때문입니다. 즉, 괄호로 묶인 gdb() (...):

$ echo $HISTSIZE

$ 

또한 종료 시 기록을 활성화한 다음 기록 파일을 어디에 저장할지 생각해야 합니다. 다음은 내 ~/.gdbinit 파일입니다. 아직 없으면 만듭니다.

$ cat ~/.gdbinit 
set environment HISTSIZE 10000000
set history filename ~/.gdb_history
set history save on
set history size 10000000
set history expansion on
show history

$ 

왜냐고 물을 수도 있겠네요환경 설정 HISTSIZE 10000000작동하지 않습니까? 페이지에 표시된 것처럼 gdb 자체가 아닌 프로그램에만 영향을 미치기 때문입니다.http://www.delorie.com/gnu/docs/gdb/gdb_20.html:

환경 변수 varname을 value로 설정합니다. 값은 GDB 자체가 아닌 프로그램에 대해서만 변경됩니다.

지금 패치를 사용할 수 있습니다.https://sourceware.org/bugzilla/show_bug.cgi?id=16999:

2015-06-17 18:14:09 UTC:

... 이 패치는 잘못된 GDBHISTSIZE의 동작을 bash가 HISTSIZE를 처리하는 방식과 일치하게 만듭니다. null 또는 범위를 벗어난 GDBHISTSIZE([0, INT_MAX] 외부)를 만나면 이제 기록 크기를 0 대신 무제한으로 설정합니다. 숫자가 아닌 GDBHISTSIZE를 만나면 아무 것도 하지 않습니다.

2015-06-17 18:30:10 UTC:

다음 버전의 GDB에서는 더 이상 HISTSIZE를 읽지 않습니다. 그렇게 하면 해결하는 것보다 더 많은 문제가 발생하기 때문입니다. 대신 GDBHISTSIZE는 같은 목적으로 읽혀집니다. 그리고 좋은 측정을 위해 GDBHISTSIZE의 동작은 bash가 HISTSIZE를 읽는 방법과 일치하므로 GDBHISTSIZE를 -1로 설정하면 GDB의 기록 크기가 무제한이 됩니다.

관련 정보