2016-06-13 9 views
1

GDBを使用してC++プログラムをデバッグしようとしています。私は15のブレークポイントを設定しました。ほとんどのブレークポイントは異なるファイルにあります。最初の5つのブレークポイントの後、ブレークポイントがどのコード行を指しているのかを覚えにくくなりました。GDBでのデバッグ - 特定のブレークポイント周辺でのコードの参照

私は、特定のブレークポイントが何を指しているかを思い出すのにかなり苦労しています。私はこれがかなり気を散らすことがわかります。私は、特定のブレークポイントの周りにコードを表示するようgdbに指示する方法があるかどうか疑問に思っていました。

このようなもの - $(gdb) code 3は、ブレークポイント3の周囲に30行のコードを示します。これは今日可能ですか?どのように私を見せてくれますか?

私はtuiモードでgdbを実行しています。また、ソースファイルを編集するためにemacsを開いたままにしています。

答えて

1

gdbのように正確に行うことはできませんが、gdb pythonでスクリプト化できます。

この粗スクリプトは役立つはずです:listbreak.pyへ

import gdb 

class Listbreak (gdb.Command): 
     """ listbreak n Lists code around breakpoint """ 

     def __init__ (self): 
       super(Listbreak, self).__init__ ("listbreak", gdb.COMMAND_DATA) 

     def invoke (self, arg, from_tty): 
       printed = 0 
       for bp in gdb.breakpoints(): 
         if bp.number == int(arg[0]): 
           printed = 1 
           print ("Code around breakpoint " + arg[0] + " (" + bp.location + "):") 
           gdb.execute("list " + bp.location) 
       if printed == 0: 
         print ("No such breakpoint") 
Listbreak() 

コピーこれを、GDB(ソースlistbreak.py)でソースを、このようにそれを使用します。

listbreak 2

4

gdbはemacs内で使用できます。

emacsでは、M-x gdbと入力し、実行可能ファイルの名前を入力した後にM-x gdb-many-windowsと入力します。これは、デバッガ、ローカル、ソース、入出力、スタックフレーム、ブレークポイントにアクセスできる、IDEのようなインターフェイスを生成します。

リファレンスとスナップショットhereがあります。

関連する問題