· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Удаленный дебаггинг

. 1 . 2 . >>

Посл.отвђт Сообщен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 заработает?

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.099