0

ディレクトリ パスを指定するマクロを作成したいと考えています。マクロは、ディレクトリ内のすべてのファイルに対して別のマクロを実行する必要があります。それは gdb で可能ですか?

4

1 に答える 1

1

実行したいマクロは gdb マクロだと思います。これを解決するには、gdb の Python サポートを使用してこれを含めることをお勧めします。以下を入れますforallindir.py

import gdb
import os

class ForAllInDir (gdb.Command):
  "Executes a gdb-macro for all files in a directory."

def __init__ (self):
  super (ForAllInDir, self).__init__ ("forallindir",
                                      gdb.COMMAND_SUPPORT,
                                      gdb.COMPLETE_NONE, True)

def invoke(self, arg, from_tty):
  arg_list = gdb.string_to_argv(arg)
  path = arg_list[0]
  macro = arg_list[1]
  for filename in os.listdir(path):
    gdb.execute(macro + ' ' + os.path.join(path, filename))

ForAllInDir()

それからgdbでsource forallindir.py、それはうまくいくはずです。たとえば、次のようなテスト マクロを定義します。

define testit
  print "i got called with $arg0"
end

そのディレクトリにforallindir /tmp/xx testit2つのサンプルファイルがあると、

$1 = "i got called with /tmp/xx/ape"
$2 = "i got called with /tmp/xx/bear"

それが役立つことを願っています。

于 2012-08-06T17:02:24.997 に答える