отладка 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" вариант интересный, жаль, что немного не цивилизованный. Лучше бы разработчики сказали, что за подарочки готовят для пользователей. И лучше бы сюрпризам быть приятными.


 

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

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

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

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

 
BCEM >>:

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

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

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

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

Интересует.

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

 

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

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

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

Причина обращения: