Добавить INDENT?
Добавить INDENT?
Снова пятница и снова хочется странного.
Имеем Студию.
Имеем некоторый сторонний код.
Имеем PDB для этого кода.
Т.е. можно воткнуть брэйкпоинт и прописать что-там-надо.
Текущая проблема: если прописать с Актионс дамп каких-то данных - оно разумеется отдампится в дебуг-виндов.
Когда все линейно - этого достаточно - смотрим что интересно и думаем где и что править.
А вот когда идут косяком рекурсивные вызовы - начинается разбор того с какого уровня это пришло.
Странное, которого хочется, получить нормальные отступы - лесенкой, пропорционально глубине рекурсии.
Пока есть одна идея как это сделать - просмотреть стек на предмет вызовов той же функции.
Кто-нибудь видел решения? Или есть еще какие идеи?
ты как обычно не все договариваешь...
По мне, самое удобное решение добавить в вызов функции параметр - номер вложенности. На крайняк сделать номер вложенности статиком в дополнительном классе.
Либо сделать словарь "код вызова, уровень вложенности".
Я не понял, что за дамп ты хочешь сделать? Что ты в этом дампе хочешь увидеть?
А коллстэк всегда линейный и никаких рекурсий или ветвлений в нем нет и быть не может, поэтому нет никакого смысла делать отступы в коллстеке.
добавить в вызов функции параметр - номер вложенности.
-----
Ну так в этом и вопрос - как его определить?
статиком в дополнительном классе.
------
Если Я правильно понимаю - предлагается руками трекировать вход и выход из функции?
Я этого как-то сильно не хочу - отслеживать по паре мест на одну запись? - да ну его нафиг...
Я не понял
------
Представь рекурсивную функцию.
Где-то в функции что-то считается.
Хочу:
- видеть эти данные
- видеть на каком уровне рекурсии они сброшены.
коллстэк всегда линейный
------
Из него можно получить имена функций => можно посчитать уровень рекурсии.
Ну так в этом и вопрос - как его определить?
а ничего не нужно определять
abc(0);
...
abc(int level)
{
...
abc(level+1);
...
}
Так не работает.
Точнее - ты не понимаешл что именно меня интересует.
Поменяй параметер на double x и интересующие меня данные будут sin(x) и уровень рекурсии.
Пересчитать уровень из х - нельзя - он модифицируется еще где-то. Ну или нарисуй десяток параметров.
точнее - ты не понимаешь что именно меня интересует.
В этом обычно и проблема.
Количество параметров роли не играет, это просто дополнительный.
abc(0,y);
...
abc(int level, double x)
{
...
abc(level+1,y);
...
}
Хммм...
Поясню еще раз.
Есть некоторый код с рекурсивной функцией. Если критично знать какой именно System.xml.dll
В нем класс компилятора XSD -схем. Схемы, по определению, рекурсивны.
То, что меня интересует - посмотреть что именно обрабатывается и когда.
И смотреть мне хочется не разово в точке останова, а после прогона.
Потому на брейкпоинте прописывается Actions и в Debug window печатаются данные. Мне хочется иметь напечатанные данные с отступом зависящим от глубины рекурсии.
Ну и куда будем дописывать параметер? :)
и в Debug window печатаются данные
отступ в Debug window? А кто их туда выводит? Никогда так не делал, всегда пользую log4net
Ну и куда будем дописывать параметер?
В ту функцию которая тебя интересует, до того как..
А кто их туда выводит?
------
Их туда выводит прописанный в брейкпоинте Actions.
всегда пользую log4net
------
Ну и как прописывать логер в чужую скомпилированную и подписанную дллку?
В ту функцию которая тебя интересует
-----
Нет такой возможности. А вот прописать и сохранить Актионы - есть.
Ну и как прописывать логер в чужую скомпилированную и подписанную дллку?
Вам для продактион или разобраться? PDB есть, а JustDecompile нет?
А как, кстати актионы сохранять? Я иногда условную точку останова делаю, так выражения любят пропадать.
разобраться?
-----
разобраться
PDB есть
-----
Качается с сайта мелкомягких. Соурсы - оттуда же.
А как, кстати актионы сохранять?
-----
Там экспорт есть... ну глючный, да... мелкомягкое же...
Импорт тоже есть:
аа...
-----
Вот и Я звучу похоже...
никогда бы сам этот импорт не нашел. И на картинке стрелка не та.