как поймать ошибку в коде?

Ответить
Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

как поймать ошибку в коде?

Сообщение Boris » 21 авг 2017, 00:51

Сразу скажу - я плохо знаю python и редко пользуюсь GDAL на нем.
Но есть программа на python'е, которую время от времени я использую и каждый раз с матом - перематом - это GDAL_CALC. Про ее интуитивную "очевидность" и набор справочных материалов, я в это раз спрашивать не буду.

Сразу перейду к очевидному - к коду, к которому обычно посылают на любом вопросе по GDAL, в ответе 3-м или 4-м. Там кода страшно не богато, но как понять, что именно в 60%-80% случаев вызывает ошибку?
21.08.jpg
21.08.jpg (33.17 КБ) 13085 просмотров
Потому как выходной растр создается всегда. Просто очень не удобно для утилиты командной строки в конце каждого вызова сидеть и нажимать "закрой программу".

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: как поймать ошибку в коде?

Сообщение ericsson » 21 авг 2017, 01:43

Запускать с параметром -debug и сохранить это в лог, показать тут...
Еще, если все получается, но раздражает ошибка, можно запускать batch-файлом, в конце которого будет вызов pskill.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: как поймать ошибку в коде?

Сообщение Александр Мурый » 21 авг 2017, 09:29

Boris писал(а):
21 авг 2017, 00:51
Сразу перейду к очевидному - к коду
Таки где же сам код?
Редактор материалов, модератор форума

gamm
Гуру
Сообщения: 4044
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1049
Ваше звание: программист
Откуда: Казань

Re: как поймать ошибку в коде?

Сообщение gamm » 21 авг 2017, 12:30

лучше поставить Visual Studio + Python toolkit, и запускать в отладчике. Но GDAL - это на 99% ошибка с путями и русскими буквами ...

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: как поймать ошибку в коде?

Сообщение trir » 21 авг 2017, 12:35

Спойлер
лучше поставить Visual Studio + Python toolkit, и запускать в отладчике
в visual studio community Python toolkit идёт в комплекте, но pyCharm тоже ничего...
ЗЫ spoiler не работает...

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: как поймать ошибку в коде?

Сообщение freeExec » 21 авг 2017, 12:52

Да ошибка скорее всего в используемых бинарниках, а не питоне, поэтому исправить её вряд ли удастся.

alexandr cherepanov
Гуру
Сообщения: 534
Зарегистрирован: 30 ноя 2006, 13:31
Репутация: 116
Откуда: Moscow

Re: как поймать ошибку в коде?

Сообщение alexandr cherepanov » 21 авг 2017, 13:12

Была аналогичная проблема, решения не нашел. Насколько понял это какой-то конфликт Windows и Numpy. На работе скрипта это никак не сказывалось, просто раздражало появление ошибки в конце. Заморачиваться с переустановками не стал. Просто не использую gdal_calc.py.
С версии GDAL 2.2 вроде как всю растровую алгебру можно делать через VRT Derived Bands.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: как поймать ошибку в коде?

Сообщение Boris » 21 авг 2017, 17:20

Александр Мурый писал(а):
21 авг 2017, 09:29
Таки где же сам код?
Сам код в стандартном пакете GDAL: утилита Gdal_Calc.bat на основе Gdal_calc.py.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: как поймать ошибку в коде?

Сообщение Boris » 21 авг 2017, 17:23

Хорошо переформулирую вопрос - как радикально, но корректно - с закрытием открытых файлов и очисткой памяти (все таки растры занимают ее обильно), закрыть программу на python'е. Есть очень большая уверенность, что сбой происходит в последнем "return".

Serpuh
Новоприбывший
Сообщения: 11
Зарегистрирован: 27 авг 2017, 14:46
Репутация: 0
Откуда: Москва

Re: как поймать ошибку в коде?

Сообщение Serpuh » 31 авг 2017, 16:14

Бесплатная Visual Studio + python tools for visual studio
https://www.microsoft.com/ru-ru/SoftMic ... unity.aspx
http://streletzcoder.ru/ustanovka-podde ... udio-2015/
Тогда можно отладчиком пройтись по коду и посмотреть где вылетает.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: как поймать ошибку в коде?

Сообщение Boris » 01 сен 2017, 10:31

Спасибо за ответы. Буду посмотреть. ;)

Ответить

Вернуться в «GDAL/OGR»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей