Подтвердить что ты не робот

Могу ли я получить стек вызовов python с linux perf?

Например,

    def test():
        print "test"

Я использовал perf record -g -p $pid, но результат был всего лишь PyEval_EvalFrameEx. Как я могу получить реальное имя "тест" или если не могу, используя perf?

4b9b3361

Ответ 1

Вы не сможете сделать это с помощью perf, специально созданного для интерфейса модели процесса Linux, декодирования этих фреймов стека и т.д. Он делает то, что, как предполагалось, сообщает вам, что он выполняет функцию PyEval_EvalFrameEx. Он должен быть расширен с помощью информации, специфичной для python, чтобы иметь возможность фактически декодировать информацию о кадре Python, чего не должно произойти. К сожалению, я не нашел действительно хороший способ легко отлаживать модули Python и C/С++. Обычно это pdb для одного и gdb для другого.