対話型デバッグ中にgdb出力を強調表示および色付けする方法は?

StackOverflow https://stackoverflow.com/questions/209534

  •  03-07-2019
  •  | 
  •  

質問

ddd、nemiver、emacs、vim、またはその他のフロントエンドを使用する必要があると返信しないでください。gdbをそのまま使用しますが、出力をいくつかの端末カラーで表示したいです。

役に立ちましたか?

解決

.gdbinit

〜/ .gdbinit を微調整して色を付けることができます。ここから入手できるmammonの .gdbinit を使用できます。

https://github.com/gdbinit/gdbinit

必要に応じて調整できます。 SOの回答のおかげでこれを見つけました。取得できる出力の種類は次のとおりです。

。gdbinit

GitHubリポジトリも利用できます: https://github.com/gdbinit/Gdbinit

補足説明として、 lldbに適用も同じ考えでした。

GDBダッシュボード

同じ概念に従って、 GDBダッシュボードは、PythonでGDBのモジュラービジュアルインターフェースを提供します。 。

 GDBダッシュボード

(void)walker

別の同様のプロジェクトは、GDBのPythonサポートを使用して拡張性を高めているため、チェックアウトする価値があります。 https:// github .com / dholm / voidwalker

@dholmは、以前のものに触発された彼自身の .gdbinit も提供しています。

(void)walker

pwndbg

一部のプロジェクトは、表示の改善など、一連の便利な機能を提供します。これは、 PEDA または pwndbg 。後者の説明は次のとおりです。

  

PEDAの代替。私たちの良き友人 windbg の精神で、 pwndbg pwnd-bag と発音されます。

     
      
  • 速度
  •   
  • 回復力
  •   
  • クリーンコード
  •   

これは、PEDAのものと同様のデバッグおよびエクスプロイト開発をサポートするコマンドを提供し、表示を改善します(ただし、これはプロジェクトの主な焦点ではありません)。ソフトウェアはまだ開発中であり、まだ適切にリリースされていません。

 pwndbg

ボルトロン

プロジェクトの説明は次のとおりです。

  

Voltronは、ハッカー向けの拡張可能なデバッガUIです。それができます   他の端末で実行されているユーティリティビューをデバッガに接続します(LLDB   またはGDB)、逆アセンブリ、スタックなどの役立つ情報を表示します   内容、レジスタ値など、まだあなたに同じを与えます   使い慣れたデバッガーCLI。

.gdbinit を変更して、自動的に統合できます。ただし、ディスプレイ自体はGDBの外部にあります(tmuxスプリットなど)。

 voltron

GEF

GEF は別のオプションであり、次のように記述されます。

  

これは、主にエクスプロイトおよびリバースエンジニアが使用することを目的としています。   Python APIを使用してGDBに追加機能を提供し、支援します   動的分析およびエクスプロイト開発のプロセス中。

 GEF

他のヒント

色ではありませんが、gdbの text gui を検討してください。 gdbの使用方法に大きな違いが生じます。

次で起動できます:

gdb -tui executable.out

スクリーンショット:

ここに画像の説明を入力

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

  • ソースのどの行とその周辺の行を示しています
  • ブレークポイントを表示

フロントエンドが必要ないことはわかっています。 しかし、 cgdb はgdbに非常に近いため、 テキストモードですが、上記のソースウィンドウにコードの構文が強調表示されています。

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

  1. " set prompt"による色付きプロンプト。たとえば、プロンプトを太字で赤にします:

    プロンプトを設定\ 033 [1; 31m(gdb)\ 033 [m

    またはプロンプトを新しい形、太字および赤にします:

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

    ここに画像の説明を入力してください

  2. フックによる色付きコマンド

  3. "リスト"の色付き構文強調表示コマンド。

すべての例は、Michael Kelleherが書いた次のブログ投稿で入手できます。

" Beautify GDB&quot ;、 2010年5月12日(archive.org経由)

"実験的なGDB構文の強調表示&quot ;、2010年5月15日(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サポートなし、「ユーザーモード」ハック。

こちらの主要部分を見つけました それを少し修正しました。ハイライトが必要、c ++ filt。色がおかしくなったら、reコマンドを発行してください。

cgdb gdb -tui

よりもはるかに優れています

ニート、coloutを使用してこのハックを見つけました: https:/ /github.com/nojhan/colout/blob/master/colout/example.gdbinit

before-after

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

解決策は、gdb-pythonを使用することでした(MSYSでは、Linuxでは通常 gdb には既にPythonが組み込まれていますか?)、フック backtrace 、使用

python stack_trace = gdb.execute('backtrace', False, True')

次に、Pythonの正規表現を使用して stack_trace を処理し、出力します。太字などの色は、次のような関数によって実現されます。

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)

別の適切な色の組み合わせは、 thisによって提供されます。設定。バックトレースの検査がはるかに簡単になります。使用するには、そのファイルを〜/ .gdbinit として保存し、通常どおりgdbを実行します

今後の GDB 8.3の新機能

https:/ /sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS

  

ターミナルスタイリングがCLIおよびTUIで利用可能になりました。 GNUソース   さらに、ハイライトを使用して、ソースコードのスタイリングを提供できます。   スニペット。 「スタイルの設定」をご覧ください。詳細については、以下のコマンド。

 gdbのスクリーンショット8.2.91.20190401-23.fc30

好きな色を得ることができます;

# 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top