2009-04-02 7 views

ответ

5

Я бы указал, что PTrace is terribly broken on OS X. Надеюсь, эта статья поможет вам обойти проблемы. Вы также можете использовать mach непосредственно для изменения памяти ... проверьте, как это делает Mach_inject.

+0

сломанный, вероятно, завышает проблему. Я думаю, что «неполное» будет немного более справедливым. –

+0

Спасибо за помощь. Я посмотрел на код Mach_inject, и это именно то, что я искал. – computergeek6

+0

Согласен, Брайан, это немного гипербола. Тем не менее, я думаю, что Apple, оставляя PTrace неполным, довольно плохая вещь. – Paul

1

Ptrace - это обычный механизм для этого (и имеет мало/ничего общего с какао - это unix api, man ptrace). После того, как вы подключаетесь к процессу, и процесс остановлен, вы можете делать такие вещи, как чтение и запись из инструкции childs или пространства данных, одного шага и т. Д.

+0

Мне нужно сделать редактирование в режиме реального времени, пока процесс запущен – computergeek6

+0

Тогда трюк будет заключаться в том, чтобы ограничить время, потраченное на приостановку приложения, например. если ваши изменения занимают <10 мс, это не будет действительно примечательным, если вы не будете возиться с мультимедийным приложением, и в этом случае вы, вероятно, захотите <1 мс на изменение. – olliej

+0

Так что я должен написать изменяющуюся часть в C для скорости, а затем создать оболочку Cocoa вокруг нее, чтобы взаимодействовать с остальной частью программы? – computergeek6

Смежные вопросы