解析objdump输出

时间:2010-12-24 16:28:41

标签: python parsing objdump

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

我面对这个脚本的问题只是简单的字符串解析;这更像是一个实用程序脚本,这就是为什么我没有为这些编写测试。我想知道是否可以通过编写自定义解析器或简单而有效的正则表达式来完成相同的工作。

这个查询是为了学习,所以我可以在下次(希望)更好的方式处理这样的问题。

我不介意实现的细节(shell,ruby,python,perl;任何事情都可以)。代码甚至没那么重要,真的,我想知道如何做到这一点。

2 个答案:

答案 0 :(得分:2)

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

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

'  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']

答案 1 :(得分:1)

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