Ironpython: отладка исключений нулевой ссылки - PullRequest
4 голосов
/ 25 августа 2011

Ранее я задавал этот вопрос, когда видел исключение нулевого указателя. В этом случае оказалось, что на самом деле я видел ошибку в IronPython.

Теперь недавно я снова столкнулся с этой ошибкой при использовании сторонней библиотеки (написанной на C #). Библиотека - это библиотека DotSpatial , и оказалось, что я случайно создал условие в своем коде IronPython, которое привело к побочному эффекту при разрыве метода DotSpatial. Для справки вызов и сообщение об ошибке:

>>> myScheme.CreateCategories(myLayer.DataSet.DataTable) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
SystemError: Object reference not set to an instance of an object.

Это было особенно трудно отладить, потому что проблема была не в объекте myScheme или DataTable, которые я передавал его методу, а в другом свойстве myScheme, которое я установил неправильно, о котором я даже не знал, что к CreateCategories обращались .

Чтобы выяснить, что здесь происходит, мне пришлось прочитать исходный код DotSpatial . Хотя у меня нет особых проблем с этим, мне было интересно, есть ли более простые способы отладить такую ​​ошибку? Или я застрял с ошибочными сообщениями об ошибках, потому что я работаю с IronPython и сторонней библиотекой?

1 Ответ

3 голосов
/ 27 августа 2011

Есть два параметра командной строки, чтобы IronPython отображал больше информации об исключениях: -X:ExceptionDetail и -X:ShowClrExceptions.Один или оба из них должны дать вам полную трассировку стека до места, где произошел NullReferenceException.

...