Несмотря на то, что задачи связанные с параллельно обработкой чисел с плавающей запятой у меня возникают редко (точнее впервые). Хотел спросить кто и чем пользуется для отладки таких алгоритмов. Вроде как некоторые SSE команды понимает и Olly хотя (далеко не все) и IDA 5. Но, блин, отображать содержимое XMM регистров их никто не научил. Единственный отладчик показывающий xmm регистры,который мне попался это WinDbg. Но работая в WinDbg у меня постоянно возникает впечатление, что я тестирую какую-то кривую альфу. Самые обычные, казалось бы, действия там нужно делать через задний пайп Я так и не нашел простого способа после загрузки кода для отладки, собственно, переместиться на сам отлаживаемый код из ntdll. А чтобы бряк поставить на команде так это вообще проще застрелиться. Хотелось бы узнать кто и как решил для себя проблему отладки SSE?
Ковыряние в настройках OllyDbg показало, что xmm регистры он все таки показывать он умеет. в Debugger Options -> Вкладка Registers и там галочка decode SSE registers. Только по умолчанию она выключена. Конечно проблема с некорректным расползнаванием большого количества SSE команд все равно остается. Но отлаживать теперь стало гораздо проще Вопрос снят
... В продолжении этой темы. XMM регистры Оля показывает, но в ввиде значений типа Float. Это не всегда удобно. А можно как-нибудь поменять на Hex? Искал по настройкам, нашел только то, что при их модификации можно увидеть значение регистра ввиде Hex.
Miller Rabin У меня тоже так было после softice и дебагера вижуалки. А теперь практически всё в windbg/cdb отлаживаю. Все другие отладчики по возможностям просто тухнут. Там просто другая идеология - консольная, привыкнуть надо.
Что-то windbg меня не впечатлил. Первую остановку делает где-то в системных библиотеках. А как перейти на ЕР? Смотреть в РЕ-редакторе его адрес, а потом туда идти? Неудобно. Да и там в нем XMM то же ввиде Float. Наверное. Но не все же в СИ работают.
tar4 Что за EP? Entry point для экзешника процесса? Узнать её можно, например, так: 1. Узнаёшь адрес ехе-модуля (lm m<имя модуля>) 2. !dh -f <адрес модуля>. Команда выдаст, среди прочего, Entry Point RVA. Если нужно одной командой, можно написать макрос (с использованием внешнего парсера (Perl, for ex.)). Или написать своё расширение (extension).
Конечно, так можно. Но в Оле достаточно в опциях выставить "Entry Point of main module" и все ехе-файлы будут после загрузки останавливаться на ЕР. Впрочем, вопрос остается: как смотреть регистры XMM ввиде Hex.
tar4 Нельзя объять необъятное. Всё-таки WinDbg предназначен для серьёзной работы, и в нём набор команд оптимизирован соответственно. Впрочем, такой эффект можно устроить с пом. стартового скрипта. И вообще, имеется мощная поддержка расширений. Как в окне Registers - не знаю... А в консоли в любом виде можно. Например, как 2 uint64: r xmm0:uq Как 4 uint: r xmm0:ud
А если мне сразу нужно посмотреть состояние нескольких регистров XMM? Их изменение по ходу трассировки кода. Согласись, это удобнее делать при их отображении в окне регистров. Но, все равно спасибо за внимание.
.pcmd -s "r xmm0:ud,xmm1:ud,xmm7:ud" Согласен, было бы удобнее в окне регистров. Может и есть какой способ...
Green, если тебе нравятся консольные отладчики, может стоит взглянуть на это: hттp://www.cracklab.ru/f/index.php?action=vthread&forum=3&topic=8175&page=1 Первые впечатления от этого китайского отладчика - очень неплохие. И там вроде есть то, что мне нужно.
sysser когда-то пробовал. Слишком он глючен тогда оказался. Может теперь поправили... IMHO, шансов сделать кернел дебагер лучше микрософта теперь очень мало. На что софтайс был крут, и того пришлось закрыть из-за ядерной политики МС. А программерам sysersoft до коллег из numega labs, наверно, ещё расти и расти...