我想创建一个宏,将为其提供目录路径。宏又必须为目录中的所有文件运行另一个宏。这在 gdb 中可能吗?
问问题
190 次
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 testit
在该目录中有两个示例文件会给我们
$1 = "i got called with /tmp/xx/ape"
$2 = "i got called with /tmp/xx/bear"
希望有帮助。
于 2012-08-06T17:02:24.997 回答