Найти строку памяти, используя символы отладки


Здравствуйте, я пытаюсь найти адрес строки в lldb на mac os.

В GDB я бы использовал команду find с адресами для поиска между ними. Но я не могу найти такую команду для lldb, я знаю, что строка находится в разделе cstring, который в моем случае является 0x00000000002e4f08-0x000000000032e0a8. Но мне нужно точно знать, где именно.

2 2

2 ответа:

Если у вас есть доступ к инструментам предварительной версии Xcode 6, lldb включает новую команду memory find, которая делает это. Энрико добавил быструю реализацию этой команды несколько месяцев назад.

Простой пример, в котором используются три команды lldb section, memory find, memory read чтобы найти строку внутри разделенного, отпустите приложение.

(lldb) section 
[0x0000010462c000-0x00000107744000] 0x0003118000 MyApp`__TEXT
[0x00000107744000-0x00000107d48000] 0x0000604000 MyApp`__DATA
/* removed sections for brevity */

(lldb) mem find -s "youtube" -- 0x00000107744000 0x00000107d48000
data found at location: 0x10793362c
0x10793362c: 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 65 6d 62 65  youtube.com/embe


(lldb) memory read -c100 0x10793362c
0x10793362c: 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 65 6d 62 65  youtube.com/embe
0x10793363c: 64 2f 58 46 67 45 59 75 35 71 66 36 38 3f 61 75  d/XFgccu5qf68?a