2012-02-13 180 views
31

假設如何在TUI模式下在GDB的命令窗口中回滾?

(gdb) print *this 

導致20行輸出的。是的,會有Type <return> to continue, or q <return> to quit,但我想在輸出結束後回滾到頂端。

我不認爲http://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html回答我的問題。它指出

< PgUp鍵>
滾動活動窗口中的一個頁面了。

但是,當焦點位於命令窗口時,PgUp將回滾命令歷史記錄,而不是在命令窗口中回滾。這只是我遭受這種行爲嗎? (如果這使得任何差異)

爲了SSH到RHEL我用膩子

回答

19

一個一路上看到在TUI模式GDB輸出歷史是啓用日誌記錄:

set trace-commands on 
set logging on 

,然後尾日誌在另一個shell:

cd where/gdb/is/running 
tail -f gdb.txt 

這具有將滾動與命令交互分離的優點,因此您可以在查看GDB輸出的過去部分時鍵入命令。

沒有滾動鍵在我的CMD窗口中工作,所以GDB有效地消耗和銷燬它自己的輸出。切換出TUI模式允許向上滾動,但在TUI模式下出現的輸出不存在 - 非TUI窗口僅顯示在切換出TUI模式後生成的新輸出。到目前爲止,日誌和尾部是我能找到的唯一解決方案。


編輯:如果激活切換到TUI模式之前GDB記錄(通過set logging on),你可能會發現記錄在進入TUI停止(這是GDB的錯誤)。您可以切換回上:

set logging off 
set logging on 
35

我發現這裏的答案:http://beej.us/guide/bggdb/

注意,當SRC窗口具有焦點時,箭頭鍵將移動源代碼,但是當CMD窗口具有焦點時,箭頭鍵將選擇命令歷史記錄中的前一個和下一個命令。 (根據記錄,命令移動SRC窗口單一線和單頁是+, - ,<,和>。)

還有示出這樣一個例子會話:

(gdb) info win 
     SRC  (36 lines) <has focus> 
     CMD  (18 lines) 
(gdb) fs next 
Focus set to CMD window. 
(gdb) info win 
     SRC  (36 lines) 
     CMD  (18 lines) <has focus> 
(gdb) fs SRC 
Focus set to SRC window. 
(gdb) 
+9

代替'fs next'也可以按照[文檔](http://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html)中所述的'ctrl + xo'切換焦點。 – stefanct 2014-07-09 15:56:54

+10

@ hlin117,還是不知道如何從這個答案滾動cmd窗口 – 2015-08-09 13:47:26

4

您可以嘗試Ctrl + p以前的命令Ctrl + n下一個命令(當你使用Ctrl + p回到前面的命令:)