Rastreando o caminho do arquivo e o número da linha
Estou usando o pythontrace
módulo para rastrear algum código. Quando eu rastrear código dessa maneira, posso obter um dos dois resultados a seguir:
Ligar:
tracer = trace.Trace(count=False, trace=True, ignoredirs=[sys.prefix, sys.exec_prefix])
r = tracer.run('run()')
tracer.results().write_results(show_missing=True)
Resultado:
<filename>(<line number>): <line of code>
Ligar [citação]:
tracer = trace.Trace(count=False, trace=True, ignoredirs=[sys.prefix, sys.exec_prefix], countfuncs=True)
r = tracer.run('run()')
tracer.results().write_results(show_missing=True)
Resultado:
filename:<filepath>, modulename:<module name>, funcname: <function name>
O que eu realmente preciso é de um traço que me dê isso:
<filepath> <line number>
Parece que eu poderia usar as informações acima e intercalá-las para obter o que preciso, mas essa tentativa falharia no seguinte caso de uso:
sys.path
contém diretórioA
e diretórioB
.Existem dois arquivosA/foo.py
eB/foo.py
AmbosA/foo.py
eB/foo.py
conter a funçãobar
, definido nas linhas 100 - 120Existem algumas pequenas diferenças entreA/foo.py
eB/foo.py
Neste cenário, usando essa intercalação para identificar corretamentebar
é chamado é impossível (por favor me corrija se eu estiver errado) sem analisar estaticamente o código dentro de cadabar
, o que em si é muito difícil para funções não triviais.
Então, como posso obter a saída de rastreio correta de que preciso?