코드가있는 gdb 분할보기


111

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

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

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


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

답변:


95

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


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

87

ctrl+ x및 ctrl+ 를 눌러 동적으로 트리거 할 수 있습니다 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.