анализ выходных данных objdump - PullRequest
1 голос
/ 24 декабря 2010

Мне было интересно, если кто-то здесь написал / использует скрипт, который анализирует вывод objdump и извлекает из него коды операций? У меня очень, очень тривиальная реализация, но я ищу что-то лучшее.

Проблема, с которой я сталкиваюсь в этом сценарии , заключается в том, что он выполняет простой анализ строк; это скорее служебный скрипт, и поэтому я не написал тесты для них. Мне было интересно, можно ли сделать то же самое, написав специальный анализатор или простое, но эффективное регулярное выражение.

Этот запрос предназначен для изучения, так что в следующий раз я могу (надеюсь) лучше подойти к этой проблеме.

Я не возражаю против специфики реализации (shell, ruby, python, perl; все подойдет). Код даже не имеет большого значения, на самом деле, я хотел бы дать несколько советов о том, как вы это сделаете.

Ответы [ 2 ]

2 голосов
/ 23 июня 2012

Извините, если вы этого не хотите, но ваша паста больше недоступна.

Вот краткий совет. Различные части вывода разделены вкладками.

'  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 голос
/ 02 сентября 2011

Лучшим решением было бы создать objdump из исходного кода и сделать обертку на языке Python или другом языке, которая напрямую получит вывод. Вы МОЖЕТЕ сделать это с помощью разбора строк, но это часто глючит (читайте как реализовано плохо). Определенно возможно выполнить синтаксический анализ строки правильно ... У меня есть утилита, которая полагается на это.

...