Как изменить содержимое памяти с помощью LLDB?
Какая команда lldb эквивалентна команде, показанной ниже в GDB?
(gdb) set {char} 0x02ae4 = 0x12
Значения являются произвольными примерами. С помощью GDB я мог легко редактировать байт-код по заданному шестнадцатеричному адресу, просматривая дампы в терминале. С тех пор как я перешел на mavericks, я пытался немного поиграться с lldb, но мне тяжело в некоторых областях. Возможно, он даже не обладает этой функциональностью..
2 ответа
Согласно руководству по lldb-основам, альтернативой LLDB является memory write
,
Также (lldb) help memory write
определяет такой формат ввода:
memory write -i <filename> [-s <byte-size>] [-o <offset>] <address> <value> [<value> [...]]
-f <format> ( --format <format> )
Specify a format to be used for display.
-i <filename> ( --infile <filename> )
Write memory using the contents of a file.
-o <offset> ( --offset <offset> )
Start writng bytes from an offset within the input file.
-s <byte-size> ( --size <byte-size> )
The size in bytes to use when displaying with the selected format.
Так что, в вашем случае, что-то вроде (lldb) memory write 0x02ae4 0x12
должен просто работать.
memory write
работает, но вы также можете использовать механизм выражений с выражением C, например
p *(char*)0x2ae4 = 12