Отладка C#

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 974
Благодарностей
4 430
Баллы
113
В очередной раз не могу отловить
Выполнение действия CSharp OwnCode Parameter is not valid.
Естественно не номера строки, не переменной нет. Кусок кода довольно большой, строк 300 и ошибка возникает далеко не всегда. Последовательно искать причину очень долго и сложно.
Как отлаживаете подобные ошибки?
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
переменные все в логи пиши
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 974
Благодарностей
4 430
Баллы
113

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
try-catch для блока кода, при ошибке все переменные в файл + саму ошибку.
Другого особо ничего не придумаешь.
 

esouldy

Client
Регистрация
28.02.2016
Сообщения
185
Благодарностей
92
Баллы
28
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
 
  • Спасибо
Реакции: sydoow и orka13

esouldy

Client
Регистрация
28.02.2016
Сообщения
185
Благодарностей
92
Баллы
28
ну или вижуалстудио
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
Ключевой момент.
ошибка возникает далеко не всегда
Если дебажить, и код вообще не работает, то да, комментить часть кода и искать ошибку, ну или в студии. Если ошибка плавающая, тут уже веселее становится.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 176
Благодарностей
2 179
Баллы
113
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
ага, тоже так делаю, типа вставляю посредине
Код:
return "ok";
если все ок, значит ошибка ниже, и тогда переношу эту строку в середину нижней части. Но я все надеялся что существуют методы более правильные...
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Но я все надеялся что существуют методы более правильные...
Правильный метод
http://zennolab.com/discussion/threads/otladka-proektov-v-visualstudio-uproschaem-sebe-zhizn.37523/

Но это опять же, для дебага. Если ошибка плавающая, тут только логирование во время ошибки, других вариантов нет.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 974
Благодарностей
4 430
Баллы
113

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Не пойму, а почему строку хотя бы не выводить в лог?
Ну так вывели.:D
Надо радоваться что вообще зенка не падает от таких unhandled exception, а просто пишет что случилась какая то фигня.

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

Не видя код, трудно сказать, но думаю по самому коду можно предположить, где могут быть потенциальные ошибки, и добавить там try-catch или доп. проверку.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
В том то всё и дело.
Не пойму, а почему строку хотя бы не выводить в лог?
строку выводит когда ошибка на этапе компиляции. У тебя ошибка на этапе выполнения. Какие-то данные плохие подставил куда-то
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 974
Благодарностей
4 430
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Когда работаешь с System.IO.Stream то конечно, чего только нет.

Номер строки бы...
я не уверен, но по идее нечего выводить. На момент ошибки код скомпилирован и строк уже нет
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 489
Благодарностей
3 356
Баллы
113
я не уверен, но по идее нечего выводить. На момент ошибки код скомпилирован и строк уже нет
А как же стектрейс? Только для отображения строки, если не ошибаюсь, нужны отладочные символы. Или в данном случае - это не применимо?
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

sydoow

Client
Регистрация
22.06.2011
Сообщения
287
Благодарностей
148
Баллы
43
методом половинного деления))))) делим код пополам ретурном и смотрим в какой половине ошибка)
Буду теперь знать как этот способ называется, а то юзал и даж не знал))
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 119
Баллы
113
Кусок кода довольно большой, строк 300 и ошибка возникает далеко не всегда.
Скорее всего, из-за занятости каких-то ресурсов, к которым идет обращение. Попробуй часть кода обернуть в Using или использовать методы Close или Dispose.
 
  • Спасибо
Реакции: Astraport

Nord

Client
Регистрация
22.03.2012
Сообщения
2 401
Благодарностей
1 467
Баллы
113
  • Спасибо
Реакции: sydoow и orka13

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3
Здравствуйте. Подскажите пожалуйста, есть ли возможность отложенной компиляции кубика C# кода в zennoposter? В моём проекте C# код набирается динамически, из появляющихся в процессе данных, переменных. Поэтому в самом начале его просто нет, а вместо него в кубике стоит переменная, текст которой и станет полноценным кодом в шаге до кубика. Но проект не проходит первичную компиляцию, как я понял, из-за того что кода просто нет. Как тут можно исхитриться?
1588182553261.png
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
Здравствуйте. Подскажите пожалуйста, есть ли возможность отложенной компиляции кубика C# кода в zennoposter? В моём проекте C# код набирается динамически, из появляющихся в процессе данных, переменных. Поэтому в самом начале его просто нет, а вместо него в кубике стоит переменная, текст которой и станет полноценным кодом в шаге до кубика. Но проект не проходит первичную компиляцию, как я понял, из-за того что кода просто нет. Как тут можно исхитриться?
Посмотреть вложение 54776
смешно. а с чего такой вывод , что это вообще возможно ?
 

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3

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