Отладка C#

  • Автор темы Автор темы Astraport
  • Дата начала Дата начала

Astraport

Client
Регистрация
01.05.2015
Сообщения
5 084
Реакции
4 633
Баллы
113
В очередной раз не могу отловить
Выполнение действия CSharp OwnCode Parameter is not valid.
Естественно не номера строки, не переменной нет. Кусок кода довольно большой, строк 300 и ошибка возникает далеко не всегда. Последовательно искать причину очень долго и сложно.
Как отлаживаете подобные ошибки?
 
переменные все в логи пиши
 
try-catch для блока кода, при ошибке все переменные в файл + саму ошибку.
Другого особо ничего не придумаешь.
 
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
 
  • Оценить
Реакции: sydoow и orka13
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
Ключевой момент.
ошибка возникает далеко не всегда

Если дебажить, и код вообще не работает, то да, комментить часть кода и искать ошибку, ну или в студии. Если ошибка плавающая, тут уже веселее становится.
 
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
ага, тоже так делаю, типа вставляю посредине
Код:
Развернуть Свернуть Копировать
return "ok";
если все ок, значит ошибка ниже, и тогда переношу эту строку в середину нижней части. Но я все надеялся что существуют методы более правильные...
 
Но я все надеялся что существуют методы более правильные...
Правильный метод
http://zennolab.com/discussion/threads/otladka-proektov-v-visualstudio-uproschaem-sebe-zhizn.37523/

Но это опять же, для дебага. Если ошибка плавающая, тут только логирование во время ошибки, других вариантов нет.
 
Не пойму, а почему строку хотя бы не выводить в лог?
Ну так вывели.:D
Надо радоваться что вообще зенка не падает от таких unhandled exception, а просто пишет что случилась какая то фигня.

По сути код в OwnCode и в экшенах C# это зона ответственности того, кто туда этот код пишет.
И он должен заботиться о том, чтобы в нужных местах оборачивать код в try-catch или делать доп. проверки.

Не видя код, трудно сказать, но думаю по самому коду можно предположить, где могут быть потенциальные ошибки, и добавить там try-catch или доп. проверку.
 
В том то всё и дело.
Не пойму, а почему строку хотя бы не выводить в лог?
строку выводит когда ошибка на этапе компиляции. У тебя ошибка на этапе выполнения. Какие-то данные плохие подставил куда-то
 
Когда работаешь с System.IO.Stream то конечно, чего только нет.

Номер строки бы...
я не уверен, но по идее нечего выводить. На момент ошибки код скомпилирован и строк уже нет
 
я не уверен, но по идее нечего выводить. На момент ошибки код скомпилирован и строк уже нет
А как же стектрейс? Только для отображения строки, если не ошибаюсь, нужны отладочные символы. Или в данном случае - это не применимо?
 
Последнее редактирование:
А как же стектрайс? Только для отображения строки,если не ошибаюсь, нужны отладочные символы. Или в данном случае - это не применимо?
Понятия не имею)
 
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
Буду теперь знать как этот способ называется, а то юзал и даж не знал))
 
Кусок кода довольно большой, строк 300 и ошибка возникает далеко не всегда.
Скорее всего, из-за занятости каких-то ресурсов, к которым идет обращение. Попробуй часть кода обернуть в Using или использовать методы Close или Dispose.
 
  • Оценить
Реакции: Astraport
Здравствуйте. Подскажите пожалуйста, есть ли возможность отложенной компиляции кубика C# кода в zennoposter? В моём проекте C# код набирается динамически, из появляющихся в процессе данных, переменных. Поэтому в самом начале его просто нет, а вместо него в кубике стоит переменная, текст которой и станет полноценным кодом в шаге до кубика. Но проект не проходит первичную компиляцию, как я понял, из-за того что кода просто нет. Как тут можно исхитриться?
1588182553261.png
 
Здравствуйте. Подскажите пожалуйста, есть ли возможность отложенной компиляции кубика C# кода в zennoposter? В моём проекте C# код набирается динамически, из появляющихся в процессе данных, переменных. Поэтому в самом начале его просто нет, а вместо него в кубике стоит переменная, текст которой и станет полноценным кодом в шаге до кубика. Но проект не проходит первичную компиляцию, как я понял, из-за того что кода просто нет. Как тут можно исхитриться?
Посмотреть вложение 54776
смешно. а с чего такой вывод , что это вообще возможно ?
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)