Как отлаживать сценарий Python с помощью I Python --pdb? - PullRequest
0 голосов
/ 03 августа 2020

Я хотел бы отладить расширение, написанное для Sphinx, в интерактивном режиме, используя pdb, которое отлично работает для простых скриптов. Когда я выполняю sphinx-build -M html . _build, я получаю ValueError. Итак, чтобы отладить его, я написал:

ipython3 $(which sphinx-build) --pdb -- -M html . _build

К сожалению, я не получаю полную трассировку, только ту из основного скрипта sphinx-build:

$ ipython3 $(which sphinx-build) --pdb -- -M html . _build
Running Sphinx v3.1.2

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/sphinx/config.py", line 319, 
    in eval_config_file
    execfile_(filename, namespace)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/util/pycompat.py", line 88, 
    in execfile_
    exec(code, _globals)
  File "/home/canard/test-sphinx/conf.py", line 17, in <module>
    raise ValueError()
ValueError

---------------------------------------------------------------------------
SystemExit                                Traceback (most recent call last)
/usr/local/bin/sphinx-build in <module>()
      9 if __name__ == '__main__':
     10     sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
---> 11     sys.exit(main())

SystemExit: 2
> /usr/local/bin/sphinx-build(11)<module>()
      7 from sphinx.cmd.build import main
      8 
      9 if __name__ == '__main__':
     10     sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
---> 11     sys.exit(main())

ipdb>  

  

Как я могу увидеть полная трассировка?

Я попытался упростить случай, добавив raise ValueError() в conf.py. Поэтому для воспроизведения просто создайте новый проект сфинкса с sphinx-quickstart, измените conf.py и добавьте исключение. При такой настройке возникает та же проблема. Отладчик останавливается на sys.exit(main())

1 Ответ

0 голосов
/ 03 августа 2020

RTFM : из руководства Sphinx вы можете прочитать:

Советы по отладке: используйте параметр sphinx-build -P для запуска pdb при исключениях .

Это не ответ на ваш вопрос, но ответ на вашу проблему XY ...

...