代码之家  ›  专栏  ›  技术社区  ›  Some Name

如何根据体系结构实现GDB功能

  •  0
  • Some Name  · 技术社区  · 3 年前

    我正在写 GDB 中的脚本 python 以打印应用程序的一些调试信息。问题是支持多种体系结构:x86、alpha、aarch64,可能还会有更多。打印调试信息的功能因体系结构而异。

    所以实际上我有以下函数:

    def print_info_x86():
       #...
    
    
    def print_info_aarch64():
       #...
    
    
    def print_info_alpha():
       #...
    

    我想实现以下目标:

    def print_info():
       if arch == 'x86':
          print_info_x86()
       #etc..
    

    有办法做到这一点吗?有一个GDB命令 show architecture 并且可以从中提取 objdump -a ,但是有没有一种更简单的方法来理解二进制文件是在什么体系结构中编译的 GDB ?

    1 回复  |  直到 3 年前
        1
  •  2
  •   0___________    3 年前

    https://sourceware.org/gdb/onlinedocs/gdb/Architectures-In-Python.html

    像这样的东西:

    f = gdb.selected_frame()
    a = f.architecture()
    print(a.name())