코드가있는 gdb 분할보기


111

나는 gdb에서 프로그램을 디버깅하고 있었는데 어떻게 든 내가 본 적이 없거나 들어 본 적이없는 새로운 기능, 명령을 제공하는 것 외에도 코드를보고 탐색 할 수있는 분할보기를 발견했습니다.

사진은 미안하지만 ttys에는 스크린 샷이 없습니다.

이게 뭐야? 내가 뭘했는지, 좀 더 구체적으로는 어떻게이 분할 화면 모드를 다시 얻을 수 있나요? 이 모드에 대한 이름이 있습니까, 아니면 사용 방법에 대해 읽을 수있는 곳이 있습니까?


2
빠른 참조 : Cx Ca, Cx a 또는 Cx A를 사용하여이 모드를 종료 할 수 있습니다 .` 이 질문을 참조하십시오 .
Richard

답변:


95

TUI (농담 아님)라고합니다. 예를 들어 gdbtui또는 gdb -tui...로 시작하십시오 .


11
정상적으로 layout next시작한 후에도 사용할 수 있습니다gdb
khaverim

87

ctrl+ xctrl+ 를 눌러 동적으로 트리거 할 수 있습니다 a.


감사합니다 @ user146043, ctrl-a와 동시에 화면을 실행하는 경우 화면 명령을 시작하는 방법이 유일한 방법 인 것 같습니다!
olik79

그 콤보로도 닫을 수있는 것 같습니다!
Nick Desaulniers



15

GDB 대시 보드

https://github.com/cyrus-and/gdb-dashboard

GDB 대시 보드는 공식 GDB Python API를 사용 하고 기본 명령next 과 같이 GDB가 중지 될 때 원하는 정보를 인쇄합니다 .display

Vs TUI :

  • 셸을 더 마법의 저주 상태에 두는 대신 stdout으로 인쇄하므로 더 강력합니다. 예 :

  • Python에서 고도로 구성 가능 : 디버깅중인 항목에 따라 출력 할 항목과 각 섹션의 크기를 선택할 수 있습니다.

    가장 유용한 뷰는 이미 구현되어 있습니다 : 소스, 어셈블리, 레지스터, 스택, 메모리, 스레드, 표현식 ...하지만 GDB Python API에 노출되는 모든 정보로 쉽게 확장 할 수 있어야합니다.

    TUI는 소스, 어셈블리 및 레지스터 중 두 개만 표시 할 수 있습니다. 수정하고 싶지 않다면 물론 C 소스 코드입니다 ;-)

여기에 이미지 설명 입력

나는 GDB가 기본적으로 이와 같은 설정과 함께 제공되어야한다고 믿습니다. 그렇게하면 훨씬 더 많은 사용자를 끌어들일 것입니다.

아, 그리고 메인 개발자 인 Andrea Cardaci 는 매우 반응이 좋고 훌륭했습니다. 큰 명성.

참고 항목 : 대화 형 디버깅 중에 gdb 출력을 강조 표시하고 색상을 지정하는 방법은 무엇입니까?


2
얼마나 멋진 지 설명 할 수있는 단어가 충분하지 않습니다. 감사합니다 :)
unresolved_external


5

GDB가 표준 모드에있을 때를 사용 win하면 TUI 모드로 자동 전환됩니다.
TUI 모드에 대한 기타 명령 :

  • info win
    표시된 모든 창의 크기를 나열하고 제공합니다.
  • focus next | prev | src | asm | regs | split
    이름이 지정된 창에 포커스를 설정합니다. 이 명령을 사용하면 스크롤 키가 다른 창에 영향을 미칠 수 있도록 활성 창을 변경할 수 있습니다.

읽기 여기에 더 많은 도움을 형성한다.


2

cgdb라는 GDB 용 인터페이스 도구도 있습니다. 일부 색상 강조 표시가 있더라도. 코드보기로 전환하려면 "ESC", gdb로 다시 전환하려면 "i"

cgdb


1

tui 모드는 분명히 emacs에서 영감을 얻었습니다. 이맥스에서 분할 창 사이를 전환하는 ^ Xo를 눌렀을 때 우연히 발견했습니다. 어쨌든, 아직 언급되지 않은 또 다른 기능으로 이어집니다. 즉, 커서를 코드 창 (스크롤 할 수있는 곳)에서 명령 줄로 이동하거나 ^ Xo를 사용하여 그 반대로 이동할 수 있습니다.


분명히 GNU의 대부분의 프로그램은 일관성 때문에 주로 키 바인딩과 같은 이맥스를 가지고 있습니다. 나는 bash에 vi 모드가 있다는 것을 알고 있지만 emacs 모드만큼 충분하지 않습니다.
klaus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.