Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Обсуждаем новые идеи > Tiny Debugger


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

Жду ваших комментариев, пожеланий, предложений... короче порции оваций и помидоров ;D

Автор: CBP 14.03.03, 18:28
Показывает '????????????????' вместо названий длл (в unicode что-ли?)

Автор: e-yes 15.03.03, 07:42
Всё делал согласно официальной доки, т.е если fUnicode стоит - читаю строку как юникод, но видимо под 9х всё равно строки в MBCS лежат. Поправлю. Спасибо за инфу.

Автор: CBP 16.03.03, 02:53
Ну не знаю, посмотрел на fUnicode своим debug. Он как и положено = 0

Автор: e-yes 18.03.03, 09:16
Вроде поправил DLLки, на днях будут готовы окна Watch и Variables.

Автор: Oksiv 18.03.03, 14:12
Сделай его ещё удалённым, чтоб ты мог сидя дома смотреть какие проблемы у людей
"за тысячи километров". Вплоть до сливания кусков кода(исходников) на твою тачку.

Автор: e-yes 18.03.03, 14:51
Ну непосредственно отлаживать на удаленной тачке (не в пределах ЛС) сложновато сделать, прокси, файрволы всякие... А вот ведение лога с полным раскладом по исключениям, стеку, переменным... еще до хрена чего ... сделаю обязательно. Очень жизнь облегчает;)

Автор: Oksiv 18.03.03, 15:03
Цитата e-yes, 18.03.03, 17:51:59
Ну непосредственно отлаживать на удаленной тачке (не в пределах ЛС) сложновато сделать, прокси, файрволы всякие... А вот ведение лога с полным раскладом по исключениям, стеку, переменным... еще до хрена чего ... сделаю обязательно. Очень жизнь облегчает;)


Куски исходников обязательно сделай :)

Автор: Oksiv 18.03.03, 15:05
Твоя программа похожа на DbgView которая перехватывает DbgPrint, и т.д. by Mark Russinivoch.

Автор: e-yes 19.03.03, 11:38
Ну у меня debugee более высокоуровневые:) - не очень хочется в дебри kernel-mode debugging лезть.

Автор: e-yes 04.04.03, 13:19
Исправил кучу глюков, добавил окно для просмотра переменных (на 2K и XP работает, на остальных - не знаю ). Сделать еще надо дохрена чего, но на первом месте - точки останова ( что б действительно дебаггером это моё творение назвать можно было ;) )

Автор: e-yes 04.04.03, 13:37
Да, чуть не забыл!!!
Теперь сабж можно сделать отладчиком по-умолчанию, т.е если прога падает - после нажатия Debug будет открываться Tiny Debugger.
Для этого в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug надо исправить (добавить) строковое значение с названием Debugger, в котором указать
"<полный путь>\TinyDBG.exe" -p \%ld -e \%ld

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

Автор: CBP 04.04.03, 17:12
В 95 так и не показывает имена длл. Вместо них показывает одинокую кавычку.
ЗЫ. И ещё не работает со старыми версиями mfc42.dll (4.хх) из-за отсутствия в них каких-то ф-ий (сорри,не помню номер ординала)

Автор: e-yes 04.04.03, 17:43
Ну 95-е уже история. К тому ж я MFC юзаю только для морды. Кстати, BoundsChecker сказал, что под 2K не будет работать, а под 9х будет. А получается совсем наооборот.

Автор: e-yes 08.04.03, 15:34
New build just released and uploaded.

Автор: e-yes 09.04.03, 08:55
Исправлено два глюка:
1. Error Lookup заработал на "русскоязычных" ОСях.
2. Исправлен глюк при использовании сабжа в качестве post mortal debugger.

Автор: e-yes 15.04.03, 19:22
Новая фича: @TIB и @ERR,hr в окне Variables

Автор: e-yes 20.04.03, 13:32
Млин, сабж теперь будет развиваться еще по одному направлению: как профайлер (возможно, еще и runtime error-checking tool). Добавил фенечку по перехвату вызовов функций АПИ. Теперь можно посмотреть, кто что как через что делает:) В меню View по поводу этого события появился пункт Profiler. Профайлер (пока) показывает только факт вызова функций из DLL'ок явно загруженых процессом, ни времени выполнения оных, ни передаваемых параметров он не показывает. А по сему, очень рад был бы услышать пожелания по развитию этой фичи.

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

Пока все. Жду порцию конструктивной критики и предложений.

Автор: Oksiv 22.04.03, 11:02
Извини конечно но у меня дебагер вообще не запускается и ничего не выводит  ??? ???

Автор: e-yes 22.04.03, 11:03
А ОСь какая?

Автор: Oksiv 22.04.03, 11:42
W2K второй SP русская, Celeron 1.1 GHz, 128 Мб

Автор: e-yes 22.04.03, 12:38
У меня тоже W2K, все должно быть нормально. Единственное - есть баг в мониторе вызовов АПИ. Во, млин, надо разбираться что там не так...

Автор: Oksiv 22.04.03, 12:46
Сделай какой-нибудь LOG типа журнал загрузки а то он совсем ничего не пишет никаких ошибок а просто вылетает :(

Автор: Oksiv 22.04.03, 13:11
А DBGHelp надо грузить ?

Автор: Oksiv 22.04.03, 13:38
Во заработало Dbghelp.dll нужен был  ::) сорри за панику :)
а почему он не пишет что библа не загружена, ты статически её загружаешь?

Автор: e-yes 23.04.03, 09:48
Да, статически. Но переделать на динамическую и проверку версии сделать запланировано.
Че не ругается - хз, у меня если её нет (свежей версии)- пишет что не может "связать" такую-то импортированную функцию.

Автор: e-yes 23.04.03, 14:23
Новый билд. Изменено определение @ERR. Добавлено автосохранение положения окон.

Автор: DAnton 29.04.03, 10:00
А где исходнки? Или это не Free Software?

Автор: e-yes 29.04.03, 11:00
Free Software. Но не open source :)

Автор: AlexRezn 08.05.03, 04:01
А почему не Open Sourse? Поучились бы дебаггеры лепить. В будущем продавать собираетесь?

Автор: SergeS 08.05.03, 07:59
А кому думаешь охота открывать секреты свои

Автор: DAnton 03.06.03, 14:23
Нет. Есть Freeware, а есть Free software (типа open source).

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

Автор: DAnton 03.06.03, 14:24
Цитата SergeS, 08.05.03, 11:59:05
А кому думаешь охота открывать секреты свои

Какие еще секреты?

Автор: _IX0DeS 03.06.03, 15:29
Цитата Антоха, 03.06.03, 18:23:11
Нет. Есть Freeware, а есть Free software (типа open source).

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

устроим потом конкурс... кто быстрее ее сломает  ;D

Автор: _IX0DeS 09.06.03, 08:49
слушай а ты туда дизассемблер не думал запихать ?  ;)

Автор: e-yes 09.06.03, 11:19
А почему ты думаешь так давно не обновлял? Именно этим и занят, недельки через две будет апдейт;)

Автор: DAnton 10.06.03, 09:34
_IX0DeS -> если за день не сломаете мне пиво.  :)

В принципе вы вообще ничего не взломаете, если будете использовать дебаггер. Можно только с дизасмом. Надо тогда еще и свой пакер сделать.  :)

Автор: _IX0DeS 10.06.03, 09:52
давай попробуем сломаю или нет ?  
только давай сразу
1.никаких хасп,sentinel,новексов ,хардлоков и прочей мутни
заморачиваться с ключами я не буду... такое только за $
2.никаких левых упакощиков типа obsidium,asprot,xtremelock,krypton там можно и на дельфи программу написать.... только свое.
3.не юзать CryptAPI... хотя... просто для меня это не очень 'хороший' показатель...
ну за сим все  ждемс

Автор: DAnton 11.06.03, 11:28
Ёёё. Все debug функции находятся в kernel32.dll. А это очень плохо.

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

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)