Здравствуйте! У меня вопрос к опытным людям - чем мне отлаживать DOS-приложение, работающее в защищенном режиме посредством DPMI? Предыстория такова, что однажды я, как обычно, отлаживал программу под LPC2214 в IAR Embedded Workbench на железке посредством J-Link, и вдруг до меня дошло, что точно такую же штуку я хочу и для отладки моего DOS-приложения, которое изначально разрабатывалось для реального режима 80x86, затем был произведен переход в защищенный режим, но ручками, а теперь стало ясно, что ручками - плохо, надо соблюдать стандарты вроде DPMI, а то больше нигде кроме как в DOS (да еще и "чистом") мое приложение нельзя будет запустить. Забегая вперед скажу, что виртуальные машины вроде VMWare или Virtual PC отказываются работать с exe-шником, мотивируя это какой-то ошибкой или неподдерживаемым дескриптором, в то время как ни на одной реальной машине, где он запускался, проблем не было. Ну и вот, начал я переписывать сие добро под DPMI и столкнулся с проблемой - в любой момент на стадии инициализации мог произойти "заворот" кишок с перезапуском кода с последующими ошибками - оказывалось, что мы уже в защищенном режиме, хотя вроде бы как программу только что запустили и т.д., в конце концов все вылетает. И каждый раз по-разному при внесении любых, пусть даже совсем несущественных изменений в код... Все это можно очень долго описывать, но мне нужен отладчик, благодаря которому я смогу спокойно ходить по инструкциям, независимо от режима процессора и состояния прерываний, и получать информацию о содержимом регистров, памяти и т.д. - все как во многих приличных отладочных средах. Когда до меня дошло про отладчик, я полез смотреть... 1. SoftICE - когда-то под DOS'ом я с ним работал, пытался работать и под Windows, правда быстро это дело забросил. Вроде я понял так, что загрузить конкретный исполняемый файл и "встать" в его начало (на первую инструкцию пользователя) - некоторая проблема, особенно, если код не использует функций Windows. Да и под DOS-ом это была проблема - там приходилось изголяться и пытаться остановить выполнение всей системы тогда, когда, предположительно, выполняется код, который нужно отладить (или подсмотреть). Сейчас я увидел упоминания о некоем Visual SoftICE, который входит в состав, например, DevPartner64. Однако, чтобы понять, та ли эта GUI-вина, что мне нужна - могущая остановить выполнение системы в начале выполнения нужного мне exe-шника (типа как галочка в IAR EW "Run to main"), или же приставка "Visual" говорит только про интегрцию с Visual Studio, - нужно установить, но, хоть для DevPartner64 и имеются файлы лицензий, они не позволяют обойти ввод серийника при установке Visual SoftICE host... 2. Пришлось посмотреть в сторону OllyDbg - он не запускает 16-битные приложения, но я попытался это проверить, либо найти соответствующий плагин. Не получилось. 3. WinDbg также отказывается загружать 16-битный exe. 4. Я вспомнил про давно заброшенный Turbo Debugger. 16-битный вариант меня не устраивал уже давно, ибо затыкался на простых вещах. Думал, вдруг TD32 меня спасет... нет, не спас, гадина, также, как и все остальные, послал меня подальше. Собственно, вопрос остается в силе. Просьба откликнуться всем, кто что-либо знает по теме и/или мог бы мне чем-нибудь помочь. Спасибо.
Ищи Bochs. (Bochs.sf.net - эмулятор со встроенным отладчиком) Поиск по форуме рулит... всплывет еще пару отладчиков, но имхо они тебе не помогут
_Serega_ Спасибо, как раз этим, за неимением других вариантов, и занялся. Скоро попытаюсь освоить, если что, поделюсь тут впечатлениями.
дебажить дпми лучше всего под вин3.1 соответствующим софтайсом (там где winice.exe) можно попробовать и под вин95-98