gdb-many-windows
으로 설정된 이맥스 24에서 GDB를 사용합니다. 대개 자체 프레임으로 설정합니다. 나는 별도의 편집 틀을 갖고 싶어. 다음과 같이 보입니다 (ASCII ASCII 다이어그램에 사과드립니다) :Emacs/GDB : 항상 특정 창에서 소스를 gdb-many-windows로 표시합니다.
+-------------+-------------+
| gdb | locals |
+-------------+-------------+
| source | I/O |
| | |
+-------------+-------------+
| stack | breakpoints |
+-------------+-------------+
큰 문제를 제외하고는 꽤 잘 돌아갑니다. gdb가 up/down/step 후에 다른 소스 버퍼를 표시해야 할 때마다 "소스"창에 항상 표시되지는 않습니다. 예를 들어, 다른 프레임의 창에 동일한 버퍼가 열린 경우 키보드 포커스를 gdb 프레임에 유지하면서 해당 프레임을 올립니다. 프레임이 서로를 커버 할 때 은 실제로 단일 모니터 설정에서을 성가 시게합니다.
동일한 소스 버퍼가 다른 곳에 표시되는지에 관계없이 gdb가 항상 소스를 표시하기 위해 gdb-many-windows 설정의 소스 창을 사용하고 싶습니다. 어떻게해야합니까?
편집 : 더 자세한 지침을 재현. Emacs 24.2.1과 GDB 7.5 - 우분투를 사용하고 있습니다. 계피와 함께 Ubuntu 10.04와 Linux Mint Nadia에서이 문제를 보았습니다.
- 이 식을 평가 :
(setq gdb-many-windows t)
- 적어도 두 개의 파일이있는 C 프로그램을 컴파일합니다. 예를 들어
:
// foo.c
void bar(int);
void foo(int c) {
if (c > 0)
bar(c - 1);
}
int main(void) {
foo(100);
return 0;
}
// bar.c
void foo(int c);
void bar(int c) {
if (c > 0)
foo(c - 2);
}
// compile with gcc -g -O0 foo.c bar.c -o test
- 보자는 메인 프레임에 표시 bar.c.
M-x 5 2
으로 새 프레임을 엽니 다. 해당 프레임에서M-x gdb
으로 gdb를 시작하십시오. 위에 표시된 것처럼 프레임에는 여섯 개의 창이 있어야합니다. GDB 프레임을 소스 프레임 위에 놓습니다. main
에 중단 점을 설정하고foo
및bar
을 호출합니다.bar
이 호출되면 bar.c가 이미 보이기 때문에 메인 프레임은 gdb 프레임 위로 올라갑니다. 그러나 키보드 포커스는 gdb 프레임에 머물러 있습니다.
나는 문제 기능이 gud.el.gz에서 gdb-display-source-buffer
이라고 생각합니다. defadvice
으로이 문제를 재정의하려고 계획하고 있지만 충고에 익숙하지 않습니다. 알아 내면 여기에 답변을 게시 할 것입니다.
문제를 재현 할 수 없습니다. –
@ Jay Conrod : 아직도이 문제가 있는지 알려주세요. 그렇다면 Emacs와 gdb의 정식 버전 번호를 알려주십시오. 또한'emacs -q' 명령을 사용하여 설정상의 잠재적 문제를 찾아보십시오. 또한 최소한의 예를 제시하십시오. 즉, 작은 소스 파일과 문제를 재현하기위한 단계별 지침. – Tobias
@Tobias, 재현 할 자세한 지침을 추가했습니다. 내가 다른 것을 분명히 할 수 있는지 알려줘. –