Как напечатать текущее имя файла, функцию и номер строки в скрипте Cython - PullRequest
0 голосов
/ 05 апреля 2019

имя файла и номер строки сценария Python

Мне нужно напечатать текущее имя файла, функцию и номер строки в сценарии Cython.Предлагаемые решения работают только для сценария .py и НЕ работают для сценария Cython.

Спасибо

1 Ответ

1 голос
/ 11 апреля 2019

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

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

import sys
import traceback

def f():
    # code ...
    try:
        raise RuntimeError() # get information about this line
    except RuntimeError:
        print(traceback.extract_tb(sys.exc_info()[2],limit=1))
    # ... more code

Обратите внимание, что вы не можете пытаться сохранить дублирование, помещая все это в функцию "get_debug_info" и затем просматривая трассировку стека - Cython генерирует только кадр стека для функции в качестве исключения распространяется вверх по стеку, поэтому, если вы поймаете исключение, вы не увидите над ним никаких кадров Cython.

...