не зря ж в хакир пишет кстати, а трасировка разве поместицо в пару десятков строк?? хотя надо попробовать. это типа активируем trap и waitfordebugevent... но тогда ведь надо както пропускать вызовы апи, нафига их трасировать, тут уже не trap нужен...
WolfHunter > некого опенсурсного примера на паблик не будет случаем? > (написать то и самому можно, но...) вообще-то, мой трейсер базируется на коде джона роббинса, (книга "отладка win-приложений"), т.к. помимо собственно трассировки нужно уметь работать с отладочной инфой, раскручивать стек (в том числе и с FPO) и делать кучу всего. но _простейший_ трейсер занимает совсем немного строк кода, вызовы API пропускать не надо, винда все равно не позволит трейсить ядро из прикладного режима, тем более, что в API функциях полно... ну как бы сказать... не то, чтобы ошибок... ну если изменить флаг направления, а потом вызвать мессагебокс, то... мы поимеем облом, поскольку винда не устанавливает флаг направления, а закладывается на его значение по умолчанию. правда, сейчас может это уже и исправили. не проверял, не знаю. но как бы то ни было, отчего бы не потрасировать API-функции, пока они еще выполняются в прикладном режиме?!
надо делоть тогда проверку на всяческие syscall, int, и пропускать их(ставить тот же int3 за инструкцией(тогда надо проверять на нашем ли инт3 мы остановилесь)).. про сех точно не знаю как его правельно трасировать..
FreeManCPM при переходе с ring3 на ring0 флаг трассировки сбрасывается автоматом и автоматом же воостанавливается при выходе обратно, так что...
проверил. действительно прыгоет. видать у меня год нозат руки были довольно кривые. но тем не менее без оптимизации какой-нить, то довольно длинный путь трассировки...
>и делать кучу всего. а я из-за этого и спрашиваю. простейшее мы и так реализуем... а до более "умного" как обычно не хватит времени/желания.
WolfHunter > простейшее мы и так реализуем... > а до более "умного" как обычно не хватит времени/желания. 1) зачастую хватает и простейшего. мыщъх много раз кусал лапы и дергал хвост, только потому, что не могу "подсмотреть" что же там такое твориться у клиента. 2) более сложное можно реализовать на основн свободных проектов. 3) написать свой отладчик - хороший способ попрактиковаться в системном программировании, после чего его можно будет встраивать в свои же проекты
>3) написать свой отладчик - хороший способ попрактиковаться >в системном программировании, после чего его можно будет >встраивать в свои же проекты ой, спасиба! шо называется "утешил" :-/ (пайду ф детсад после таких ответофф)
WolfHunter Nouzui FreeManCPM вопрос, конечно, интересный... на rsdn промелькнула как-то переводня статья "почему вас код сосет", где одним из тезисов было: каждый модуль должен иметь набор тестов, иначе ваш код отстой. на самом деле, тесты так же могут содержать ошибки и для их выявления нужно писать тесты для тестов, а это уже бесконечная рекурсия получается, причем сложность тестов запросто может превысить сложность тестирумого кода. тем не менее, _какието_ механизмы тестирования предусмотреть все-таки необходимо... встроенный трейсер - только один из них. или я чего-то недопонимаю?! или ваши программы никогда не глючили у клиентов или вы каким-то мистическим путем могли локализовать ошибки имея на руках лишь отчет доктора ватсона? ну тогда я снимаю шляпу у меня так пока еще не получается...
без отчета доктора бывало розрулеволе. метод вставки кучи мсджбоксов с цифрами статью ту читал. уж слишком жесткие там требования, не видел не одного исходинка им полностью удовлетворяющего.
>или ваши программы никогда не глючили у клиентов или вы каким-то >мистическим путем могли локализовать ошибки имея на руках лишь >отчет доктора ватсона? Не в этом дело. Просто оставьте, пожалуйста, менторский тон для своих детских книжек. А про то что идея с трейсером интересная - я уже писал.
Извините, что увожу тему с аспекта IDE\debug обратно на винду. Вот случайно наткнулся на древнюю статейку, которая выглядит как свеженаписанная - только версия винды поменялась и мохнатые лапы этой монополии начали дотягиваться и до России. Неужели никто в мире не способен реально дать им отпор?
кстати, кстати.. я сразу как-то не обратил внимания, но сейчас вспомнил, и мне стало интерсно - о чем идет речь?