Xcode Debugger - как сделать один шаг на уровне инструкций CPU

Это определенно обсессивно, но меня увлекает то, насколько умный компилятор переводит код C в машинные инструкции. Поскольку некоторые инструкции я немного размыты, было бы полезно, если бы я мог наблюдать за работой скомпилированной программы на уровне отдельных машинных инструкций - "ниже" уровня оператора C (который может генерировать несколько инструкций ЦП). Другими словами, могу ли я наблюдать изменения регистров/памяти после одной машинной инструкции?

Я уверен, что это возможно с некоторыми другими отладчиками, но я использую только Xcode.

Ответ 1

si - "Step Instruction", а ni - "Следующая инструкция". Они имеют ту же семантику, что и "шаг", а "следующий" - для строк кода, только на уровне команд.

Ответ 2

Можно использовать команды Xcode для перехода, ввода и выключения с помощью отладчика. Хитрость заключается в том, чтобы удерживать клавишу ctrl (Control), когда вы наводите указатель мыши на значки шагов отладчика, чтобы изменить контекст. Под каждым значком шага линия изменится на точку, и вы сможете перейти на уровень инструкций.

Смотрите прикрепленный скриншот, отмеченный красным овалом.

screenshot

Ответ 3

В окне "Отладчик" включите сборку: "Выполнить/отладчик" / "Источник" и "Разборка". Подождите, пока вы не нажмете точку останова. Затем используйте команду "Запуск/Шаг" в (над) для перехода в сборку.

Ответ 4

Ooops, не проверял достаточно близко - шаг в w/Option (Cmd-Opt-Shft-I = ⌘⌥⇧I)