На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Tiny Debugger
     Доброго времени суток всем!
    Решил я тут немного извратнуться и замутить проект. Точнее уже замутил.
    Мне часто приходится писать программы, пользователей которых я в глаза не видывал. Часто заказчики находятся за тысячи километров от меня, связь с ними - только по email. И вот пишешь-пишешь, компилишь релизную сборку, думаешь "ухх... well done, commander. return to the base"... ан нет - начинается сплошная засада. Приходит письмо - не работает прога на клиентской машине. Приходится вступать в переписку, выяснять что там у клиента не так, где ашипка (в ДНКwink.gif)... Нервы, время, деньги...
    Дабы не тратить их зря захотелось мне написать маленькую утилитку для просмотра отладочных сообщений программ ( то что вы посылаете в окно Output отладчика, используя OutputDebugString, TRACE и иже с ними ). Немного поигравшись, приделал более-менее полноценный Output-bar в стиле шестой студии, при вылете показываю стек вызовов функций и инфу об исключении. При наличии отладочной информации (.pdb-файлы) пользователь может локализовать область поиска глюка до функции, а при наличии исходников ( как правило - это не проблема ) и посмотреть непосредственно на строку кода ставшей причиной вылета.
    В опсчем-та тут: http://e-yes.nm.ru/tiny.dhtml можно скачать этот самый отладчик.

    Жду ваших комментариев, пожеланий, предложений... короче порции оваций и помидоров ;D
    Сообщение отредактировано: e-yes -
      Показывает '????????????????' вместо названий длл (в unicode что-ли?)
        Всё делал согласно официальной доки, т.е если fUnicode стоит - читаю строку как юникод, но видимо под 9х всё равно строки в MBCS лежат. Поправлю. Спасибо за инфу.
          Ну не знаю, посмотрел на fUnicode своим debug. Он как и положено = 0
            Вроде поправил DLLки, на днях будут готовы окна Watch и Variables.
            Сообщение отредактировано: e-yes -
              Сделай его ещё удалённым, чтоб ты мог сидя дома смотреть какие проблемы у людей
              "за тысячи километров". Вплоть до сливания кусков кода(исходников) на твою тачку.
                Ну непосредственно отлаживать на удаленной тачке (не в пределах ЛС) сложновато сделать, прокси, файрволы всякие... А вот ведение лога с полным раскладом по исключениям, стеку, переменным... еще до хрена чего ... сделаю обязательно. Очень жизнь облегчает;)
                  Цитата e-yes, 18.03.03, 17:51:59
                  Ну непосредственно отлаживать на удаленной тачке (не в пределах ЛС) сложновато сделать, прокси, файрволы всякие... А вот ведение лога с полным раскладом по исключениям, стеку, переменным... еще до хрена чего ... сделаю обязательно. Очень жизнь облегчает;)


                  Куски исходников обязательно сделай :)
                    Твоя программа похожа на DbgView которая перехватывает DbgPrint, и т.д. by Mark Russinivoch.
                      Ну у меня debugee более высокоуровневые:) - не очень хочется в дебри kernel-mode debugging лезть.
                        Исправил кучу глюков, добавил окно для просмотра переменных (на 2K и XP работает, на остальных - не знаю ). Сделать еще надо дохрена чего, но на первом месте - точки останова ( что б действительно дебаггером это моё творение назвать можно было ;) )
                          Да, чуть не забыл!!!
                          Теперь сабж можно сделать отладчиком по-умолчанию, т.е если прога падает - после нажатия Debug будет открываться Tiny Debugger.
                          Для этого в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug надо исправить (добавить) строковое значение с названием Debugger, в котором указать
                          "<полный путь>\TinyDBG.exe" -p \%ld -e \%ld

                          Буду очень признателен, если кто протестирует на 9х, у меня пока такой возможности нет.
                            В 95 так и не показывает имена длл. Вместо них показывает одинокую кавычку.
                            ЗЫ. И ещё не работает со старыми версиями mfc42.dll (4.хх) из-за отсутствия в них каких-то ф-ий (сорри,не помню номер ординала)
                              Ну 95-е уже история. К тому ж я MFC юзаю только для морды. Кстати, BoundsChecker сказал, что под 2K не будет работать, а под 9х будет. А получается совсем наооборот.
                                New build just released and uploaded.
                                  Исправлено два глюка:
                                  1. Error Lookup заработал на "русскоязычных" ОСях.
                                  2. Исправлен глюк при использовании сабжа в качестве post mortal debugger.
                                    Новая фича: @TIB и @ERR,hr в окне Variables
                                      Млин, сабж теперь будет развиваться еще по одному направлению: как профайлер (возможно, еще и runtime error-checking tool). Добавил фенечку по перехвату вызовов функций АПИ. Теперь можно посмотреть, кто что как через что делает:) В меню View по поводу этого события появился пункт Profiler. Профайлер (пока) показывает только факт вызова функций из DLL'ок явно загруженых процессом, ни времени выполнения оных, ни передаваемых параметров он не показывает. А по сему, очень рад был бы услышать пожелания по развитию этой фичи.

                                      Known issues:
                                      1) Корректно работает вроде бы только с _cdecl (а может и __stdcall) функциями. В ближайшее время эта хрень будет пофиксена.
                                      2) Не работает с ехешниками линковаными борландовским tlink'ом, ибо он импорт делает полностью через жопу (хз как система-то с ними работает :)). Надо бы разобраться, но ставить Дельфя меня что-то не прет. А BC5.02 у меня отказывается работать:(
                                      3) Перехватывает только функции DLL явно прилинкованных к ехешнику. Т.е если ты вызовешь GetProcAddress, вызовешь функцию по указателю, то... хочешь жни, а хочешь куй, все равно получишь... NULL ;)
                                      Но доделаю обязательно.

                                      Пока все. Жду порцию конструктивной критики и предложений.
                                        Извини конечно но у меня дебагер вообще не запускается и ничего не выводит  ??? ???
                                          А ОСь какая?
                                            W2K второй SP русская, Celeron 1.1 GHz, 128 Мб
                                              У меня тоже W2K, все должно быть нормально. Единственное - есть баг в мониторе вызовов АПИ. Во, млин, надо разбираться что там не так...
                                                Сделай какой-нибудь LOG типа журнал загрузки а то он совсем ничего не пишет никаких ошибок а просто вылетает :(
                                                  А DBGHelp надо грузить ?
                                                  Сообщение отредактировано: ViSko -
                                                    Во заработало Dbghelp.dll нужен был  ::) сорри за панику :)
                                                    а почему он не пишет что библа не загружена, ты статически её загружаешь?
                                                    Сообщение отредактировано: ViSko -
                                                      Да, статически. Но переделать на динамическую и проверку версии сделать запланировано.
                                                      Че не ругается - хз, у меня если её нет (свежей версии)- пишет что не может "связать" такую-то импортированную функцию.
                                                        Новый билд. Изменено определение @ERR. Добавлено автосохранение положения окон.
                                                          А где исходнки? Или это не Free Software?
                                                            Free Software. Но не open source :)
                                                              А почему не Open Sourse? Поучились бы дебаггеры лепить. В будущем продавать собираетесь?
                                                                А кому думаешь охота открывать секреты свои
                                                                Сообщение отредактировано: SergeS -
                                                                  Нет. Есть Freeware, а есть Free software (типа open source).

                                                                  А скажи какие основные функции используют отладчики вообще. Кажется я знаю как сделать защиту shareware.
                                                                    Цитата SergeS, 08.05.03, 11:59:05
                                                                    А кому думаешь охота открывать секреты свои

                                                                    Какие еще секреты?
                                                                      Цитата Антоха, 03.06.03, 18:23:11
                                                                      Нет. Есть Freeware, а есть Free software (типа open source).

                                                                      А скажи какие основные функции используют отладчики вообще. Кажется я знаю как сделать защиту shareware.

                                                                      устроим потом конкурс... кто быстрее ее сломает  ;D
                                                                        слушай а ты туда дизассемблер не думал запихать ?  ;)
                                                                          А почему ты думаешь так давно не обновлял? Именно этим и занят, недельки через две будет апдейт;)
                                                                            _IX0DeS -> если за день не сломаете мне пиво.  :)

                                                                            В принципе вы вообще ничего не взломаете, если будете использовать дебаггер. Можно только с дизасмом. Надо тогда еще и свой пакер сделать.  :)
                                                                              давай попробуем сломаю или нет ?  
                                                                              только давай сразу
                                                                              1.никаких хасп,sentinel,новексов ,хардлоков и прочей мутни
                                                                              заморачиваться с ключами я не буду... такое только за $
                                                                              2.никаких левых упакощиков типа obsidium,asprot,xtremelock,krypton там можно и на дельфи программу написать.... только свое.
                                                                              3.не юзать CryptAPI... хотя... просто для меня это не очень 'хороший' показатель...
                                                                              ну за сим все  ждемс
                                                                                Ёёё. Все debug функции находятся в kernel32.dll. А это очень плохо.

                                                                                А так способов защиты софта почти нету. Недавно только прочитал в Компьютерре ("Против лома..."), что можно сами функции шифровать! А потом когда пользователь будет вводить ключ, прога знать не будет верен он или нет. А если не верен, то код (инструкци) неверно расшифруется, выполнится че-нить не то, и прога нагнется. ;) Надо будет попробовать. Сделать только это не просто...
                                                                                Сообщение отредактировано: DAnton -
                                                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                0 пользователей:


                                                                                Рейтинг@Mail.ru
                                                                                [ Script execution time: 0,0692 ]   [ 15 queries used ]   [ Generated: 27.04.24, 16:52 GMT ]