9

我找不到如何调试自定义管理命令。

当错误发生时,他们只会说:

IndexError: list index out of range

如何获得更多调试信息?

就像它崩溃的行数一样,这会很有帮助。

4

3 回答 3

19

有一个回溯选项可以解决问题:

python manage.py command_name --traceback

然后该命令输出常见的 python 错误

于 2013-07-17T13:26:24.210 回答
2

使用-i选项和 pdb:

python -i manage.py command_name

失败与否,你将有一个 python repl,所以你可以使用pdb跳转到堆栈引发异常:

    return executor(sql, params, many, context)
  File "/home/gary/PycharmProjects/borges-env/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute 
    return self.cursor.execute(sql, params)
  File "/home/gary/PycharmProjects/borges-env/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__          
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/home/gary/PycharmProjects/borges-env/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute 
    return self.cursor.execute(sql, params)                                                                                    
django.db.utils.DataError: value too long for type character varying(10)                                                       

>>> import pdb                                                                                                                 
>>> pdb.pm()                                                                                                                   
> /home/gary/PycharmProjects/borges-env/lib/python3.6/site-packages/django/db/backends/utils.py(84)_execute()                 
-> return self.cursor.execute(sql, params)                                                                                                                   
(Pdb) param  
blablabalablabalablbalbalabla

于 2019-07-15T08:12:20.763 回答
1
  1. 利用CommandError
  2. 使用python debugger.
  3. 使用例外
  4. 使用错误记录服务
于 2013-07-17T08:00:25.397 回答