2017-07-22 11 views
1

我试图为原生和远程GDB制作通用的gdbinit,其中native是i386,remote是ARM。对于i386,我有set disassembly-flavor intel命令,它打破了针对ARM的GDB的初始化。如何仅为特定的拱执行命令?

我发现的唯一让我知道arch(至少是i386 vs ARM)的命令是 show arch命令,但它只是将其输出打印到标准输出,不允许我比较它。

那么,有什么办法只对某些架构执行一个命令,但不能执行其他架构?

+0

你可以使用Python的插件? –

+0

@FlorianWeimer不确定你的意思是什么类型的插件。如果你的意思是在'gdbinit'里输入'python'和一些python代码,那么我想我可以。我只是不知道GDB Python API的哪一部分可以在那里出现任何劣质运行之前使用。 – Ruslan

回答

2

你可以使用Python插件只是忽略错误:

python 
try: 
    gdb.execute("set disassembly-flavor intel") 
except: 
    pass 
end 

或者你可以检查架构:

python 
if "(currently i386)" in gdb.execute("show arch", to_string=True): 
    gdb.execute("set disassembly-flavor intel") 
end