請不要回復我應該使用ddd,nemiver,emacs,vim或任何其他前端,我只是更喜歡gdb,但希望看到它的輸出與一些終端顏色。如何在交互式調試過程中突出顯示和着色gdb輸出?
回答
.gdbinit更好
你可以調整~/.gdbinit
有顏色。您可以使用錢財的.gdbinit
這可以在這裏找到:
https://github.com/gdbinit/gdbinit
你可以調整你想太多也不亞於。我發現這要歸功於this SO answer。下面是你可以得到的輸出類型:
一個GitHub的倉庫也可以:https://github.com/gdbinit/Gdbinit
在一個側面說明,同樣的想法也applied to lldb。
GDB控制板
遵循相同的概念,GDB Dashboard提供GDB在Python模塊化可視界面。
(無效)步行者
另一個類似項目採用GDB的Python的支持,以提供更多的可擴展性,所以這是值得一試:https://github.com/dholm/voidwalker
@dholm還提供了從激發了他自己的.gdbinit前一個。
pwndbg一些項目提供一組有用的功能,包括改進的顯示。這是PEDA或pwndbg的情況。後者給出以下描述:
PEDA替換。本着我們的好朋友
windbg
的精神,pwndbg
的發音爲pwnd-bag
。
- 速度
- 彈性
- 清潔代碼
它提供了支持調試和利用類似於從PEDA的那些發展,更好的顯示效果(雖然這不是主要的命令項目重點)。該軟件仍在開發中,尚未正式發佈。
戰神金剛project的描述中指出:
戰神金剛爲黑客一個可擴展的調試器UI。它允許你在你的調試器(LLDB 或GDB)上運行在其他終端上運行的實用程序視圖 附加實用程序視圖,顯示有用的信息,如反彙編,堆棧 內容,寄存器值等,同時仍然給你相同的 調試器CLI習慣於。
您可以修改您的.gdbinit
以自動整合它。但是,顯示器本身不在GDB之中(例如在tmux分割中)。
GEF
GEF是另一種選擇,它被描述爲:
其目的是要通過剝削主要用於和反向工程師, 提供附加特徵到GDB使用Python API在動態分析和利用開發過程中協助 。
這不是顏色,但考慮gdb的text gui。它對gdb的可用性有着巨大的影響。
你可以啓動它:
gdb -tui executable.out
截圖:
正如你所看到的,主要特點是:
- 顯示了源線我們在和周圍的線
- 顯示斷點
哇!謝謝!我一直在尋找一個很棒的gdb圖形外殼,我已經嘗試過xxgdb,kgdb和ddd,但是它們都不是很適合我,所以我堅持使用普通的舊命令行界面。但這絕對是完美的! – 2009-01-10 19:47:06
Ctrl-x Ctrl-a:輸入此項以切換文本gui模式,即使沒有命令行選項也可以使用。 – jturcotte 2010-11-05 14:10:17
從程序打印到標準輸出打破了我的界面。除了重定向它之外的任何解決方法? – 2015-05-09 09:25:27
我知道你不想要前端。 但是cgdb如何與gdb非常接近, 它是textmode,但上面有一個源代碼窗口,代碼上帶有語法高亮顯示。
你可以得到你想要的任何顏色;
# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal
通過使用顏色可以大大增強gdb的出現。這可以通過以下任何方法完成:
- 通過「設置提示符」進行彩色提示。例如,使提示變爲粗體和紅色:
set prompt \033[1;31m(gdb) \033[m
- 通過鉤子的彩色命令
- 「list」命令的彩色語法高亮顯示。
所有的例子都可以在由邁克爾·凱萊赫寫了下面的博客文章:
"Beautify GDB", May 12, 2010 (via archive.org)
"Experimental GDB syntax highlighting", May 15, 2010 (via archive.org)
#into .gdbinit
shell mkfifo /tmp/colorPipe
define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end
define hookpost-disassemble
hookpost-list
end
define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end
define hookpost-list
set logging off
set logging redirect off
shell sleep 0.1s
end
define hook-quit
shell rm /tmp/colorPipe
end
define re
hookpost-disassemble
echo \033[0m
end
document re
Restore colorscheme
end
警告:越野車。沒有TUI支持,'用戶模式'破解。
找到主要部分here 並修改了一下。需要突出顯示,C++ filt。如果顏色混亂問題重新命令。
cgdb
比gdb -tui
我想強調如下:強調堆棧跟蹤的屬於我的源文件中的行(而不是庫)。
的解決方案是使用GDB-蟒蛇(上MSYS;在Linux通常gdb
Python自帶內置了嗎?),勾backtrace
,使用
python stack_trace = gdb.execute('backtrace', False, True')
然後處理stack_trace
與Python的正則表達式,並打印他們出去了。大膽的和其他的顏色是由這樣的函數實現:
def term_style(*v):
"""1 is bold, 30--37 are the 8 colours, but specifying bold may also
change the colour. 40--47 are background colours."""
return '\x1B['+';'.join(map(str, v))+'m'
#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)
整潔,我只是發現使用colout這個技巧:https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
顏色的另一個很好的組合是由this configuration給出。它使檢查回溯變得容易很多。要使用它,只需將該文件保存爲~/.gdbinit
並正常運行gdb
- 1. 如何調用交互式程序並立即顯示輸出
- 2. 如何在Pycharm中打開語法突出顯示/着色
- 3. 着色/突出顯示崇高文字
- 4. 如何使用列和行值突出顯示/着色表td?
- 5. 永久在交互式報表上突出顯示行APEX
- 6. 突出顯示與顏色相交
- 7. 調試程序(gdb)的塊輸出
- 8. 交互式TCL外殼在cygwin中沒有顯示輸出
- 9. 如何以編程方式設置UIButton的突出顯示色調顏色?
- 10. Vim語法着色:如何僅突出顯示長線?
- 11. 在ls命令中着色突出顯示
- 12. Solr突出顯示的色調字段
- 13. Linux C:交互式輸出
- 14. 在Php MS中調用存儲過程和顯示輸出Sql
- 15. 如何爲超過特定數量的代碼/突出顯示值着色?
- 16. 如何啓用輸出突出顯示爲xdebug模式?
- 17. Phonegap黃色突出顯示
- 18. StartActivity()紅色突出顯示
- 19. 如何在Netbeans的調試過程中更改線突出顯示的背景顏色?
- 20. 如何在html輸出中禁用突出顯示
- 21. YADR和Vim突出顯示顏色
- 22. 突出顯示崇高文本中的着色
- 23. 如何管理交互式shell的輸入和輸出?
- 24. 如何啓用zsh 5.0突出顯示和着色的命令行?
- 25. 在調試模式下更改突出顯示的行的顏色
- 26. iOS - UIButton顯示突出顯示顏色
- 27. 如何在Winform中通過編程來突出顯示listviewitem?
- 28. 在gdb中調試應用程序輸出問題
- 29. gdb在啓動過程中顯示「程序退出」
- 30. 着色ifort輸出
它不會給你顏色(所以我不會稱這爲答案),但一些〜/ .gdbinit配置將改善體驗。我用這個作爲最低限度: 集歷史節省 集打印漂亮 組輸出基數16 設定高度0 – 2008-11-19 19:35:37
這將是很好的改變公認的答案,所以我老了,不正確的答案可以被刪除。謝謝。 – ddaa 2014-11-20 09:00:58
一旦突出顯示`l`上的當前行被執行https://sourceware.org/bugzilla/show_bug.cgi?id=21044,我將`l`加入`hook-stop`並輸入Dev Nirvana。 – 2017-08-02 07:38:37