2017-07-22 12 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