2010-04-08 2 views
3

나는 이맥스와 autotools를 사용하여 리눅스에서 c/C++ 소스를 작성하고 컴파일하고있다.
나는 이맥스에서 GUD를 통해 gdb를 사용하고있다.
편의상 정의했습니다 : F7 : 컴파일, F10 : gud-next, F11 : gud-step, F5 : gud-cont, F9 : gud-tbreak, F8 : gud-until, F4 : gud-print.
나는 주로 emacs에서 리눅스의 c/C++ 소스 코드 디버깅에 관심이 있으며, gdb를 최대한 활용하고 싶습니다.
불행히도 커서 아래에 변수를 인쇄하는 F4 만 사용하고 있습니다.어떻게 이맥스를 사용하여 리눅스에서 c/C++ 소스 코드를 디버깅합니까?

제 질문은 어떻게 소스 코드를 디버깅합니까?
어떤 프로그램을 사용하십니까?
주로 어떤 키 바인딩 (기능)을 사용합니까?
디버거가 당신을 위해 무엇을 필요로합니까?
이상한 일을하는 경우 문제가되지 않습니다. 나는 내 속도를 약간 올릴 수있는 모든 것을 알고 싶다.
미리 감사드립니다.
미하일

답변

2

당신은 키 바인딩 대신 명령 줄을 사용하여 gdb을 최대한 활용할 수 있습니다. 가장 유용한 명령 :

  • bt - 백 트레이스를 인쇄합니다.
  • sn는, cont 당신이 어디에의 전체 맥락을 알고 도움이 - 단계, 다음, 계속을
  • run - 같은 세션
  • watch 내에서 처음부터 다시 매우 유용 - 감시 점을 설정하고, 값이 변경 될 때 잡기에 유용합니다.
  • call - 함수 호출
  • display - 프로그램이 중지 될 때마다 값을 인쇄합니다.
0

세그멘테이션 오류에 대한 백 추적을 얻기 위해서만 디버거를 사용합니다. 다른 모든 것들은 printf 디버깅을 사용합니다.

1

valgrind는 메모리 오류를 감지하는 데 적합합니다. 대부분의 경우 오류의 정확한 위치가 주어집니다.

gdb도 훌륭하지만 훌륭한 인터페이스가 없기 때문에 ddd 나 Eclipse 같은 GUI와 함께 사용하는 것이 가장 좋습니다 (예, Eclipse의 gdb를 사용하고 있습니다. 지원이 내장되어 있습니다. 그것을 위해).

+0

FWIW GUI 기반 설정에 GDB의 명령 행 인터페이스를 선호합니다. 커맨드 라인에서 상당한 시간을 보내는 사람에게는 이것이 사실 인 것 같습니다. – stsquad

+0

gdb가 IDE와 독립적으로 사용될 때 나는 gdb -tui를 선호합니다. 그리고 나는 Valgrind에게 Clang Static Analyzer를 선호합니다. – Yktula

+0

Ekhm 얘들 아, downvote 때, 당신은 왜 대답을 나쁜 찾을 코멘트를 게시하려면이 작은 알림이 있습니다. 왜? – pajton

3

내가 필요한 창을 선택하기 위해 M-x gdb... 명령을 사용하면 gdb 프롬프트를 사용합니다.

GDB가 진행되면 나는 종종 소스 라인에 C-X의 SPC에 브레이크 포인트를 설정
+0

'M-x gdb'입니다. – leedm777

+0

@dave : 감사합니다. 내 대답을 편집했습니다. –

관련 문제