189

返信しないでください。ddd、nemiver、emacs、vim、またはその他のフロントエンドを使用する必要があります。gdb をそのまま使用することを好みますが、その出力を端末の色で表示したいと考えています。

4

11 に答える 11

105

色ではありませんが、gdb のテキスト guiを考慮してください。gdb の使いやすさに大きな違いがあります。

次の方法で起動できます。

gdb -tui executable.out

スクリーンショット:

ここに画像の説明を入力

ご覧のとおり、主な機能は次のとおりです。

  • ソースの現在の行とその周囲の行を示します
  • ブレークポイントを表示します
于 2008-10-30T10:21:55.933 に答える
46

あなたがフロントエンドを望んでいなかったことは知っています。しかし、gdb に非常に近いcgdbはどうでしょうか。これはテキストモードですが、コードの構文が強調表示されたソース ウィンドウがあります。

于 2009-02-06T21:10:30.747 に答える
18

色を使用することで、gdb の外観を大幅に向上させることができます。これは、次のいずれかの方法で行います。

  1. 「プロンプトの設定」による色付きのプロンプト。たとえば、プロンプトを太字で赤くします。

    set prompt \033[1;31m(gdb) \033[m

    または、プロンプトを新しい形状の太字と赤にします。

    set prompt \033[01;31m\n\n#####################################> \033[0m

    ここに画像の説明を入力

  2. フックを介して色付けされたコマンド

  3. 「list」コマンドの色付けされた構文の強調表示。

すべての例は、Michael Kelleher によって書かれた次のブログ投稿で入手できます。

「Beautify GDB」、2010 年 5 月 12 日 (archive.org 経由)

「実験的な GDB 構文の強調表示」、2010 年 5 月 15 日 (archive.org 経由)

于 2010-07-15T14:33:58.557 に答える
7
#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 が必要です。色が台無しになった場合は、再コマンドを発行してください。

于 2012-05-02T16:51:48.203 に答える
4

次のように強調したかったのです: (ライブラリではなく) ソース ファイルに属するスタック トレースの行を強調します。

解決策は、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)
于 2014-01-18T08:09:46.060 に答える
-3

好きな色を手に入れることができます。

# 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
于 2009-07-14T04:16:07.047 に答える