Как изменить содержимое памяти с помощью 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
Другие вопросы по тегам