Как регистрировать инструкции процессора, выполняемые программой на Python? - PullRequest
0 голосов
/ 25 сентября 2018

Я понимаю, что исходный код Python компилируется в байт-код, который затем интерпретируется виртуальной машиной Python (скажем, CPython).Если я правильно понимаю, это означает, что виртуальная машина анализирует инструкции байт-кода и решает (во время выполнения), какие инструкции ЦП следует выполнить соответствующим образом.

Мои вопросы:

  • Можно ли зарегистрировать фактические инструкции процессора, выполненные на вашем компьютере в результате интерпретации определенного файла Python (.py)?Я понимаю, что может быть непросто (или даже выполнимо) получить соответствие 1-1 между файлом .py и инструкциями ЦП, но что ближе всего вы можете получить?
  • Идем дальше: Можно ли даже записать выполненные инструкции, которые соответствуют определенному процессу?

1 Ответ

0 голосов
/ 25 сентября 2018

используйте strace в Linux, он покажет вам все системные вызовы, сделанные любой программой (включая python).В Windows вы должны использовать что-то вроде wt или, может быть, Logger.exe , который отслеживает все вызовы библиотеки (не только системные).

Вы можете использовать отладчик, например gdb для просмотра машинного кода в реальном времени, и, поскольку у вас есть исходный код CPython, лучшей альтернативой будет просто скомпилировать его с символами отладки, а затем запустить его в отладчике C, что может дать вам стек вызовов высокого уровня, которыйбудет намного легче понять.

...