【问题标题】:parsing objdump output解析 objdump 输出
【发布时间】:2010-12-24 16:28:40
【问题描述】:

我想知道这里是否有人编写/使用了解析objdump 的输出并从中提取操作码的脚本?我有一个非常简单的实现,但我正在寻找更好的实现。

我在使用这个脚本时遇到的问题只是简单的字符串解析;这更像是一个实用程序脚本,这就是我没有为这些编写测试的原因。我想知道是否可以通过编写自定义解析器或简单而高效的正则表达式来完成。

此查询是为了学习,以便我下次可以(希望)更好地解决此类问题。

我不介意实现的细节(shell、ruby、python、perl;任何事情都可以)。代码甚至没有那么重要,真的,我想要一些关于如何做的提示。

【问题讨论】:

  • 你应该更具体地说明你做了什么,它如何不符合你的期望以及你在寻找什么。
  • 感谢您的建议!完成!
  • 你能添加一些示例输入和所需的输出吗?
  • 链接已失效。

标签: python parsing objdump


【解决方案1】:

很抱歉,如果这不是您想要的,但您的粘贴不再可用。

这里有一个快速提示。输出的不同部分由制表符分隔。

'  402000:\t14 43                \tadc    $0x43,%al\n'

这应该让你开始:

>>> r
'  402000:\t14 43                \tadc    $0x43,%al\n'
>>> r = r.strip()
>>> r
'402000:\t14 43                \tadc    $0x43,%al'
>>> r = r.split('\t')
>>> r
['402000:', '14 43                ', 'adc    $0x43,%al']
>>> r[1] = r[1].strip()
>>> r
['402000:', '14 43', 'adc    $0x43,%al']

【讨论】:

    【解决方案2】:

    最好的解决方案是从源代码构建 objdump 并制作一个直接获取输出的 python 或其他语言 swig 包装器。您可以通过字符串解析来做到这一点,但这通常是错误的(读作实施不佳)。绝对可以正确地进行字符串解析...我有一个依赖于此的实用程序。

    【讨论】:

    • 实用程序的名称是什么?
    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2020-12-17
    相关资源
    最近更新 更多