отладка DLL. Появилась проблема( - страница 3

 
Valio >>:

Логи компилляции и линковки изучали ? Сторонними тулзами свое табл. объявления

ф-ций в своем творении просматривали? у меня 220 билд, попробовал свою старую биб-ку с Олли - все прекрасно hook'-ается.

При отладке с помощью Олли будет дежавю? При условии что предварительно  посмотрел уже таблицы и логи... Чем смотреть?

 

у каждого свой набор отмычек .. для просто анализа табл. хедера на эксп/имп я пользую PE Explorer, Dependancy Walker, PE Tools, етс.

та dll-ка кривая - проблемы с декларацией вызовов к ntdll.dll, куча мусора в экспорте, судя по кривизне хедера, опять - изучите msvc, кр. того

должна некорректно обращаться с памятью - как я заранее и предполагал. На wasm-e есть очень хороший курс по работе с олей - осваивайте.

 

Хм.

А кто мешает написать под свои длл-ки функциональный тест?

Формируете контрольные пакеты данных и эмулируете поведение метатрейдера.

Я часто использую генерацию случайных данных.

Надеюсь, наличие длл означает для вас то, что весь код и вся логика вычищена из-под mql4?

Тогда mql4 просто перекачивает данные.

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

Один ведь фиг - факт того, что данные доходят до метатрейдера

(т.е. наличие результата обработки), ничего не говорит об их качестве...

Качество и отладка - это отдельная тема, включающая в себя

вашу длл, алгоритм, контрольные данные. Метатрейдера в этой теме нет. 

А такой тест может принудительно проходить после каждой сборки

или при каждой инициализации длл-я.

.

Если тест прошел - все... проверять нужно только как данные

ходят между длл и метатрейдером.

Вот вариант проверки передачи данных из метатрейдера в длл:

сбрасываете исторические данные в файл, а функцию дополняете

параметром "дата". Если дата в файле нашлась, а данные не совпали - значит все плохо.

И не надо лезть в хекс, 0-уровень ядра, драйвера, спец-технологии отладки.

Мое мнение - осваивать нужно качество.

.

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

Для тестов нужно перекручивать классы эквивалентности входных данных,

проверять граничные условия, четко выделять исключительные ситуации,

в которых определение программы выходит за рамки допустимых значений

и на выходе должна определенным образом просигнализироваться ошибка -

но это уже теория тестирования.

.

Кроме того, вопрос относительно неоднородности - почему вы считаете,

что для отладки интересно работать только на связке mql4 + MsVc++ ?

Пару модулей обязательно нужно написать на делфи или дебилдере -

дебилдер и сам по себе умеет глюкать прикольно.

.

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

быть все хорошо - но безрезультатно - и осваивать нужно торговлю.

[Удален]  
Valio >>:

та dll-ка кривая - проблемы с декларацией вызовов к ntdll.dll, куча мусора в экспорте, судя по кривизне хедера, опять - изучите msvc, кр. того

должна некорректно обращаться с памятью - как я заранее и предполагал. На wasm-e есть очень хороший курс по работе с олей - осваивайте.

Вы жжоте. Эта библиотека собрана штатными средствами от производителя операционной системы.

ntdll.dll в таблицах импорта вообще не указана. Она не используется напрямую. Так же, как и у всех других dll, которые построены на штатных crt и пользуют kernel32. Я точно пойду на васм. Куча мусора - это, Valio, boost, просто у него такой способ шаблоны инстанцировать через экспорт, чтобы линкер не повырезал код. И с памятью она обращается корректно. Не течет и все стабильно. Вы, Valio, свои слова еслиб смогли чем подтвердить - было бы здорово. Хватит трепаться, я уже понял, вы не джентельмен.

Ну, не стану боле с вами спорить.

 
jartmailru >>:

Хм.

А кто мешает написать под свои длл-ки функциональный тест?

Здесь на форуме обычно программеры и аналитики ищут истину. Хорошо, что проскользнула свежая мысль! Нет, серьезно, тестировщики что, не пользуются брейкпоинтами, не изменяют  значений переменных в watch-е?

 
Siarhei >>:

Здесь на форуме обычно программеры и аналитики ищут истину. Хорошо, что проскользнула свежая мысль! Нет, серьезно, тестировщики что, не пользуются брейкпоинтами, не изменяют  значений переменных в watch-е?

Мысль - несвежая :-).

Правильное отношение к тестам хорошо изложено у Мартина Фаулера, книга "Рефакторинг", 2005 год.

.

Разработка тестов относится и к процессу разработки кода, это делают разработчики, не тестировщики.

Вот тупой пример - сигнал разложен на компоненты - программист сложить их не догадался,

чтобы проверить, что восстанавливается исходный сигнал - брейкпойнты помогут?

.

Есть брейкпойнты - нет брейкпойнтов - без разницы, т.к. нужен тест, который проверит,

что система что-то делает правильно. А если появляется тест - то у вас сразу отпадает

необходимость использовать метатрейдер - а значит, для установки брейкпойнтов не нужно изучать

мастерство хакера. С другой стороны, если для метатрейдера / mql4 зацикливание - это проблема,

требующая завершения процесса - вытирания скомпилированного модуля ex4 - перезапуска

(мягко сказать, странное проектное решение), то почему, пользуясь полноценной средой разработки,

не поставить брейкпойнт?

.

Изначально речь идет, конечно, о юнит-тестах. Но юнит-тест предполагает, что вы работаете 

с каждой строчкой кода, каждым ветвлением и т.д. Я пишу обычно тесты изолированные,

но не для каждой строчки кода - а для функции, класса, т.е. по классификации -

это тесты функциональные, близко к black-box, но на уровне кода - т.е. все-таки - работа девелопера,

не тест-инженера.

.

Конечно, время разработки минимум удваивается. Но непонятно, что лучше -

получить отсутствие результата (неудовлетворительный результат) из-за того,

что идея изначально неверна - или - спустя месяц обнаружить дурацкую ошибку,

т.е. что был все-таки нужен тест.

.

Вот возьмите те же цифровые фильтры - профи сразу говорят - делайте тесты -

пустите белый шум, пустите ступеньку, пустите синусоиду.

Здесь уплыла фаза - там - амплитуда - здесь фильтр не тот.

Я не разобрался с конкретной единицей - единичным фильтром - а попытался строить

индикатор из нескольких. Но код индикатора замечательно работает - и без брейкпойнтов.

 
Siarhei >>:

Я уж думал, что одинок во Вселенной.

Разработчики на metaquotes.ru молчат и трейдеры тоже, а здесь уже месяц, оказывается обсуждается проблема  защитой  с помощью "Themida". https://forum.mql4.com/ru/17659.

То что метаквотовцы молчат - настораживает. Не понятно куда все катится и в каких условиях придется работать дальше(.   Сломать "Themida" вариант интересный, жаль, что немного не цивилизованный. Лучше бы разработчики сказали, что за подарочки готовят для пользователей. И лучше бы сюрпризам быть приятными.


[Deleted]  

Я так тред почитал немного...

У меня в разработке находится набор библиотек, позволяющий работать с функциями мкл4 в сях.

Т.е. работа мало чем отличаться будет - функции и аргументы те же. Однако возможности отладки, разумеется, не ограничены.

Интересует предложение?

[Удален]  
BCEM >>:

Я так тред почитал немного...

У меня в разработке находится набор библиотек, позволяющий работать с функциями мкл4 в сях.

Т.е. работа мало чем отличаться будет - функции и аргументы те же. Однако возможности отладки, разумеется, не ограничены.

Интересует предложение?

Интересует.

Опишите, плз, подробнее возможности ваших библиотек? Насколько полно они покрывают сервис терминала? Требуют ли они наличие терминала?

[Deleted]  

На текущем этапе (еще не в релизе) реализованы все торговые функции, функции обработки ошибок, второстепенные (бид, аск, поинт и тд).

Наличие терминала, разуемеется, требуют т.к. являются по сути интерфейсом взаимодействия между мкл4 и сями.

В принципе наращивание функций - дело недолгое.