Это довольно неудовлетворительный обходной путь, но я подозреваю, что это, вероятно (почти) лучшее, что вы можете сделать.
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.