как переписать и распечатать переменные в lldb - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть указатель на строку

void *s = "now is the time for all"

, и я хочу напечатать его как целое число 32-разрядного размера:

gdb) p /x *((int *)s)

Что такое эквивалентность в lldb язык?

1 Ответ

0 голосов
/ 26 ноября 2018

Именно так, за исключением того, что вы не можете поставить пробел между p и /x.

Синтаксис команды lldb не совпадает с синтаксисом команды lldb (подробнее см.

http://lldb.llvm.org/tutorial.html

), но p (среди прочих) был добавлен (какпсевдоним команды lldb expr) для людей, более знакомых с командами GDB.Однако, чтобы заставить часть /x работать через синтаксический анализатор команд lldb, ее необходимо непосредственно добавить к реальному имени команды, чтобы ее не перепутать с аргументами и параметрами.Итак:

(lldb) p/x *((int *) text_to_use)
(int) $1 = 0x8f06c8c0

Здесь также есть шпаргалка для команд lldb <-> gdb:

http://lldb.llvm.org/lldb-gdb.html

, которая может оказаться полезной.

...