|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 6, 2004 01:09:41 Отец попросил помочь. Надо организовать удаленный дебаггинг. Смысл в следующем. Есть 286-ая, а точнее от 286-й там только процессор, преферия отношения к PC на сколько я понял не имеет. BIOS тоже бог знает какой. Надо дебажить некий код на этой 286-й, но делать это удаленно. Тоесть у нас есть обычная PC с виндой, соединенная с этой двушкой через COM, LPT или что-то там еще. Окно дебаггера должно быть на PC, исполнимый код на двушке. Должны быть функции: просмотр регистров, просмотр стека, просмотр дизасемблированного кода, step into, step over, go to cursor. И клиентскую (PC) часть и серверную (286) похоже придется писать самому (самим). На сколько я понял - процессор работает в реальном режиме, хотя могу ошибаться. Отсюда несколько вопросов: 1. Может все же есть софт, который сможет помочь? Или все самим делать придется? 2. У меня пока одна идея: перевести процессор 286 в Trace Mode и на 3-е прерывание повесить прогу, которая будет отслеживать необходимую точку останова, поймав которую отправлять через какой-нибудь порт содержимое регистров, стека и т.д. Вот только я не совсем понял, как перевести проц в Trace Mode. В одной литературе сказано, что надо выставить Trace Flag в регистре FLAGS, в другой - вызвать первое прерывание. Что же на самом деле и какой по счету флаг TF в регистре FLAGS? 3. Где взять самый простенький дизассемблер, а точнее функцию BYTES TO ASCII-CODE? Возможно подойдет отец и более детально разъяснит ситуацию. |
|
|
Дата: Сен 6, 2004 02:04:38 Ну как же не помочь таким людям? :) Так мою несчастную энтропию ругать... :) Значит так, по поводу софта. Я тут немного подумал. Придумал только то, что есть Soft-Ice 2.8 (да! да! - самый лучший отладчик под DOS!). Есть под него мануальчик: http://frontline.compuware.com/nashua/doc/DS/DOS/SIUG.pdf Дык в мануальчике написано, что есть такая фича как remote debugging - страничка 189. Ты почитай. Если не знаешь, где айс 2.8 достать - то в открытую помочь не смогу, т.к. негоже свои же правила нарушать. В приват пиши. Дам. 286 в Trace Mode и на 3-е прерывание повесить прогу Э-э-э.. Ты это, случаем не того? При чем тут TF к int 3? TF - это int 1. Выставить-то флажок просто... Чего уж тут... PUSHF ; Взять FLAGS из стека POP AX ; Запихнуть в AX OR AX, 100h ; Выставить твой любимый TF PUSH AX ; Эх... Все по новой! POPF ; Ур-р-ря! Где взять самый простенький дизассемблер, а точнее функцию BYTES TO ASCII-CODE? Блин! И эти вопросы задает тот, кто СИДИТ на этом форуме! Блин. Да ты поищи. Народ уже устал обсуждать! |
|
|
Дата: Сен 6, 2004 02:32:46 · Поправил: _DEN_ Ну как же не помочь таким людям? :) Так мою несчастную энтропию ругать...:) Я тоже рад тебя видеть :) Э-э-э.. Ты это, случаем не того? При чем тут TF к int 3? TF - это int 1. Выставить-то флажок просто... Чего уж тут... Не, я не того :) Извини, дебаггеров писать не приходилось :) Тоесть, на сколько я понял, после установки TF после каждой команды будет INT 1 вызываться? Блин! И эти вопросы задает тот, кто СИДИТ на этом форуме! Блин. Да ты поищи. Народ уже устал обсуждать! Извиняй - я не самый частый гость на форуме. Так как думаешь, в этом случае легче SoftIce для доса заюзать или все же своего дебаггера писать? А вот тебе очень приватное мыло :) MrMoidodir@mail.ru |
|
|
Дата: Сен 6, 2004 03:06:41 Тоесть, на сколько я понял, после установки TF после каждой команды будет INT 1 вызываться? Да. Следовательно, ты должен вновь и вновь выставлять этот несчастный флажок. Так как думаешь, в этом случае легче SoftIce для доса заюзать или все же своего дебаггера писать? Т.к. ты никогда не писал своего (а занятие это малоприятное - в особенности под DOS :)), то заюзай, сперва, айс. Терять ты ничего не теряешь, а вот выиграть можешь очень и очень много. |
|
|
Дата: Сен 6, 2004 03:24:49 Да. Следовательно, ты должен вновь и вновь выставлять этот несчастный флажок. Он что, "одноразовый" что ли? И кстати как сделать чтобы он не работал внутри обработчика? cli? А как чтобы после выставления в конце обработчика не сработал после iret? а занятие это малоприятное - в особенности под DOS :) Это не DOS - там вообще операционки нет. Как выяснилось, нет и БИОСА. ПЗУ и есть тот код, который надо дебажить, на сколько я понял. заюзай, сперва, айс Так айс сможет с двушкой по порту общаться? Там же нет операционки... |
|
|
Дата: Сен 6, 2004 03:46:49 > Значит так, по поводу софта. Я тут немного подумал. > Придумал только то, что есть Soft-Ice 2.8 с каких пор он работает на 286? > Это не DOS - там вообще операционки нет. > Как выяснилось, нет и БИОСА. ПЗУ и есть тот код, > который надо дебажить, на сколько я понял. а возможность передать управление на свой код хоть есть? может легче будет снять дамп с ПЗУ и его отдизасмить? для 286 можно соорудить аппаратный отладчик - на тех тактовых частотах при наличии современной аппаратной базы это делается в общем-то элементарно. |
|
|
Дата: Сен 6, 2004 04:12:29 kaspersky Похоже ситуация не ясна окончательно :) Отец занимается программированием разных девайсов. Вот для одного такого девайса ему надо писать проги. И для удобства ему нужна возможность дебажить СОБСТВЕННЫЕ проги. Да, это 286, но от 286-го там только ПРОЦЕССОР. И тот какой-то хитрый. Система команд та же, архитектура ВРОДЕ та же, но вот переферия вся бог знает какая. Материнку я тоже отношу к переферии. Тоесть надеюсь теперь ясно, что никакой дамп снимать не надо, потому что отец этот код сам же и пишет, вот только на PC его не запустить, потому что все что с PC у него (286) общего так это только процессор. Кстати, на этой двушке даже USB есть. Хирая она какая-то :) Соединяться можно только через порты (COM, LPT, USB). До меня сейчас начинает доходить, что по портам управляющие команды на уровне архитектуры ведь не пошлешь... Тоесть какой-то собственный резидент придется запихнуть в эту двушку. Тоесть наш резидент (int 1) будет что-то вроде: cli push dx mov dx,адрес порта out dx,ax out dx,bx out dx,cx out dx,word ptr [sp] ... ну и т.д. ... дальше отправляем код по адресу ss:[sp-2] (ip) ... стек ... и данные по желанию pop dx sti iret Так вот где тут установку TF надо воткнуть? |
|
|
Дата: Сен 6, 2004 05:14:17 Тоесть надеюсь теперь ясно, что никакой дамп снимать не надо, потому что отец этот код сам же и пишет, вот только на PC его не запустить, потому что все что с PC у него (286) общего так это только процессор. - а почему бы не написать программку-эмулятор этого "хитрого" 286 -го и на нем уже дебагить свои проги? |
|
|
Дата: Сен 6, 2004 05:58:22 Zufyxe Ну писать эмулятор вообще ужас по сравнению с дебаггером. Софтварного эмулятора отец не нашел. Есть хардварный дебаггер, стоит 2000$. Надо будет узнать полное название этого проца, может что и можно будет найти... |
|
|
Дата: Сен 6, 2004 09:55:54 · Поправил: valterg _DEN_ Надо будет узнать полное название этого проца, может что и можно будет найти... Узнай точное название. 286 обычно во встроенных устройствах не применяют. Там или 186 или еще что-то. Софт-эмулятор для 186-го и многих других тоже есть. Я сам ,например ,свою прогу для 8051 отлаживаю на Пенте, но у меня простое железо. Только в такой постановке мы уже начинаем нарушать правила форума :-) |
|
|
Дата: Сен 8, 2004 01:25:48 Итак, проясняю ситуацию... Произошла типичная подмена понятий :) (C) Гоблин. На самом деле это 186 и вот ее полное название: AMD Am186 CC Если кто юзал удаленный дебаггинг - пожалста, поделитесь дебаггером, или хотя бы мыслями. На сколько я помню, защищенного или виртуального режимов на 186-м не было. Если все же дебаггера не найдется... volodya!!!, выручай! :) Поясни, если не лень, какие тонкости есть в пошаговом режиме (Trace Flag). Что ты имел ввиду под фразой "флаг придется устанавливать каждый раз"?? После INT 1 TF сбрасывается? Как ведет себя внутри обработчика? и кстати, vloldya, с тобой есть возможность побазарить в on-line? Ну там ася или еще что?... Если в форуме стесняешся, то сюда: MrMoidodir@mail.ru :) Есть жгучее желание пообщаться)))) |
|
|
Дата: Сен 8, 2004 02:21:24 > Если кто юзал удаленный дебаггинг - пожалста, поделитесь дебаггером, есть целый диск с кучей дебагеров для 186, говори куда залить? > Что ты имел ввиду под фразой "флаг придется устанавливать каждый раз"?? После INT 1 TF сбрасывается? именно! ведь это программное прерывание и cli на него не распростаняется, а ты ведь не хочешь, чтобы трассировочный обработчик рекурсивно трассировал сам себя? но установить прерывание при выходе из обработчика - не проблема. хуже, что 186 в ряде случаев теряет трассировочное прерывание, что требует дополнительных усилий от обработчика. подробности в любой книге по асму. > Как ведет себя внутри обработчика? в стеке ты имеешь флаги и дальний адрес возврата на следующую машинную команду, которую ты можешь дизасмить. дизасмиь предыдущую команду намного сложнее. в общем случае это вообще невозможно. |
|
|
Дата: Сен 8, 2004 03:16:13 ведь это программное прерывание и cli на него не распростаняется Всмысле програмное? Можешь привести пример самого КОРОТКОГО трассировщика? Тоесть обработчик INT 1? Предыдущую комманду дизасмить не надо)) |
|
|
Дата: Сен 8, 2004 03:35:06 > Всмысле програмное? в смысле, что не аппаратное. > Можешь привести пример самого КОРОТКОГО трассировщика? > Тоесть обработчик INT 1? конечно могу. вот мой древний сорец, трассирующий вектора прерываний в поисках резидентных вирей с целью их идентификации и убиения. тут есть немного ощибок, но в целом все работает ;) _843201463__XSAFE_IV.ZIP |
|
|
Дата: Сен 8, 2004 04:34:49 kaspersky Хе-хе :) Ну и понятия о краткости :) В моем понятии "короткий" это установка вектора, корректный вход и корректный выход из резидента :))) При 9-ти килобайтах ведь подумать придется, что лишнее, а что нет :))) На самом деле спасибо. Ты там кстати .286 написал. На 186 заработает? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.099 |