返信しないでください。ddd、nemiver、emacs、vim、またはその他のフロントエンドを使用する必要があります。gdb をそのまま使用することを好みますが、その出力を端末の色で表示したいと考えています。
11 に答える
色ではありませんが、gdb のテキスト guiを考慮してください。gdb の使いやすさに大きな違いがあります。
次の方法で起動できます。
gdb -tui executable.out
スクリーンショット:
ご覧のとおり、主な機能は次のとおりです。
- ソースの現在の行とその周囲の行を示します
- ブレークポイントを表示します
あなたがフロントエンドを望んでいなかったことは知っています。しかし、gdb に非常に近いcgdbはどうでしょうか。これはテキストモードですが、コードの構文が強調表示されたソース ウィンドウがあります。
色を使用することで、gdb の外観を大幅に向上させることができます。これは、次のいずれかの方法で行います。
「プロンプトの設定」による色付きのプロンプト。たとえば、プロンプトを太字で赤くします。
set prompt \033[1;31m(gdb) \033[m
または、プロンプトを新しい形状の太字と赤にします。
set prompt \033[01;31m\n\n#####################################> \033[0m
フックを介して色付けされたコマンド
- 「list」コマンドの色付けされた構文の強調表示。
すべての例は、Michael Kelleher によって書かれた次のブログ投稿で入手できます。
#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 サポートなし、「ユーザーモード」ハック。
ここで主要部分を見つけ て、少し変更しました。ハイライト、c++filt が必要です。色が台無しになった場合は、再コマンドを発行してください。
次のように強調したかったのです: (ライブラリではなく) ソース ファイルに属するスタック トレースの行を強調します。
解決策は、gdb-python (MSYS では; Linux では通常gdb
、Python が既に組み込まれていますか?)、 hook backtrace
、 use を使用することでした。
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)
好きな色を手に入れることができます。
# 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