Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Добавить INDENT?

415  
Murr патриот29.03.19 12:37
Murr
29.03.19 12:37 

Добавить INDENT?


Снова пятница и снова хочется странного.


Имеем Студию.

Имеем некоторый сторонний код.

Имеем PDB для этого кода.


Т.е. можно воткнуть брэйкпоинт и прописать что-там-надо.


Текущая проблема: если прописать с Актионс дамп каких-то данных - оно разумеется отдампится в дебуг-виндов.

Когда все линейно - этого достаточно - смотрим что интересно и думаем где и что править.

А вот когда идут косяком рекурсивные вызовы - начинается разбор того с какого уровня это пришло.

Странное, которого хочется, получить нормальные отступы - лесенкой, пропорционально глубине рекурсии.


Пока есть одна идея как это сделать - просмотреть стек на предмет вызовов той же функции.


Кто-нибудь видел решения? Или есть еще какие идеи?

#1 
AlexNek патриот30.03.19 01:33
AlexNek
NEW 30.03.19 01:33 
в ответ Murr 29.03.19 12:37

ты как обычно не все договариваешь...

По мне, самое удобное решение добавить в вызов функции параметр - номер вложенности. На крайняк сделать номер вложенности статиком в дополнительном классе.

Либо сделать словарь "код вызова, уровень вложенности".

#2 
Программист коренной житель30.03.19 08:43
NEW 30.03.19 08:43 
в ответ Murr 29.03.19 12:37

Я не понял, что за дамп ты хочешь сделать? Что ты в этом дампе хочешь увидеть?


А коллстэк всегда линейный и никаких рекурсий или ветвлений в нем нет и быть не может, поэтому нет никакого смысла делать отступы в коллстеке.

#3 
Murr патриот30.03.19 09:53
Murr
NEW 30.03.19 09:53 
в ответ AlexNek 30.03.19 01:33

добавить в вызов функции параметр - номер вложенности.

-----

Ну так в этом и вопрос - как его определить?


статиком в дополнительном классе.

------

Если Я правильно понимаю - предлагается руками трекировать вход и выход из функции?

Я этого как-то сильно не хочу - отслеживать по паре мест на одну запись? - да ну его нафиг...

#4 
Murr патриот30.03.19 10:00
Murr
NEW 30.03.19 10:00 
в ответ Программист 30.03.19 08:43

Я не понял

------

Представь рекурсивную функцию.

Где-то в функции что-то считается.

Хочу:

- видеть эти данные

- видеть на каком уровне рекурсии они сброшены.


коллстэк всегда линейный

------

Из него можно получить имена функций => можно посчитать уровень рекурсии.


#5 
AlexNek патриот30.03.19 10:01
AlexNek
NEW 30.03.19 10:01 
в ответ Murr 30.03.19 09:53
Ну так в этом и вопрос - как его определить?

а ничего не нужно определять

abc(0);

...

abc(int level)

{

...

abc(level+1);

...

}

#6 
Murr патриот30.03.19 10:10
Murr
NEW 30.03.19 10:10 
в ответ AlexNek 30.03.19 10:01

Так не работает.

Точнее - ты не понимаешл что именно меня интересует.

Поменяй параметер на double x и интересующие меня данные будут sin(x) и уровень рекурсии.

Пересчитать уровень из х - нельзя - он модифицируется еще где-то. Ну или нарисуй десяток параметров.


#7 
AlexNek патриот30.03.19 10:35
AlexNek
NEW 30.03.19 10:35 
в ответ Murr 30.03.19 10:10, Последний раз изменено 30.03.19 10:36 (AlexNek)
точнее - ты не понимаешь что именно меня интересует.

В этом обычно и проблема. смущ

Количество параметров роли не играет, это просто дополнительный.


abc(0,y);

...

abc(int level, double x)

{

...

abc(level+1,y);

...

}

#8 
Murr патриот30.03.19 11:29
Murr
NEW 30.03.19 11:29 
в ответ AlexNek 30.03.19 10:35

Хммм...

Поясню еще раз.

Есть некоторый код с рекурсивной функцией. Если критично знать какой именно System.xml.dll

В нем класс компилятора XSD -схем. Схемы, по определению, рекурсивны.

То, что меня интересует - посмотреть что именно обрабатывается и когда.

И смотреть мне хочется не разово в точке останова, а после прогона.

Потому на брейкпоинте прописывается Actions и в Debug window печатаются данные. Мне хочется иметь напечатанные данные с отступом зависящим от глубины рекурсии.


Ну и куда будем дописывать параметер? :)

#9 
AlexNek патриот30.03.19 11:39
AlexNek
NEW 30.03.19 11:39 
в ответ Murr 30.03.19 11:29
и в Debug window печатаются данные

отступ в Debug window? А кто их туда выводит? Никогда так не делал, всегда пользую log4net



Ну и куда будем дописывать параметер?

В ту функцию которая тебя интересует, до того как..

#10 
Murr патриот30.03.19 15:06
Murr
NEW 30.03.19 15:06 
в ответ AlexNek 30.03.19 11:39

А кто их туда выводит?

------

Их туда выводит прописанный в брейкпоинте Actions.


всегда пользую log4net

------

Ну и как прописывать логер в чужую скомпилированную и подписанную дллку?



В ту функцию которая тебя интересует

-----

Нет такой возможности. А вот прописать и сохранить Актионы - есть.

#11 
AlexNek патриот30.03.19 16:27
AlexNek
NEW 30.03.19 16:27 
в ответ Murr 30.03.19 15:06
Ну и как прописывать логер в чужую скомпилированную и подписанную дллку?

Вам для продактион или разобраться? PDB есть, а JustDecompile нет?


А как, кстати актионы сохранять? Я иногда условную точку останова делаю, так выражения любят пропадать.

#12 
Murr патриот30.03.19 17:49
Murr
NEW 30.03.19 17:49 
в ответ AlexNek 30.03.19 16:27

разобраться?

-----

разобраться


PDB есть

-----

Качается с сайта мелкомягких. Соурсы - оттуда же.


А как, кстати актионы сохранять?

-----

Там экспорт есть... ну глючный, да... мелкомягкое же...

#13 
AlexNek патриот31.03.19 11:52
AlexNek
NEW 31.03.19 11:52 
в ответ Murr 30.03.19 17:49
Там экспорт есть

А импорт? Ручками копировать?


аа... так ты с НЕТ-ом разбираешься - там фигово.

#14 
Murr патриот01.04.19 11:14
Murr
NEW 01.04.19 11:14 
в ответ AlexNek 31.03.19 11:52

Импорт тоже есть:

https://www.oreilly.com/library/view/mastering-visual-studio/9781787281905/2b0b1d1d-ab40-448a-8a74-44d4b190d2a2.xhtml


аа...

-----

Вот и Я звучу похоже...

#15 
AlexNek патриот01.04.19 11:36
AlexNek
NEW 01.04.19 11:36 
в ответ Murr 01.04.19 11:14

никогда бы сам этот импорт не нашел. И на картинке стрелка не та.

#16 
Murr патриот01.04.19 11:57
Murr
NEW 01.04.19 11:57 
в ответ AlexNek 01.04.19 11:36

никогда бы сам этот импорт не нашел.

------

Ну и как тут не помянуть билли хорошим словом... улыб

#17