【问题标题】:how to print on lldb an assembly global string variable如何在 lldb 上打印程序集全局字符串变量
【发布时间】:2021-04-28 02:30:35
【问题描述】:

我正在使用 Assembly,我正在尝试像这样打印 dst 和 src 定义:

.section __DATA,__data
  src:
        .string "hey Hello"
  dst:
        .space 20

p src 以十六进制输出,但我真正想要的是打印 ASCII 字符以进行正确的调试:

(lldb) p src
(void *) $3 = 0x4141414141414141

【问题讨论】:

  • @NateEldredge 实际上我得到了error: failed to read memory from 0x4141414141414141
  • 0x41... 既不是值也不是地址。 (例如 ASCII H 是 0x48)。是否可能在某个地方定义了另一个同名符号,或者在 libc 中可能还有另一个像这样的非全局标签? (顺便说一句,如果你想回复 Nate,请在他的回答下发表评论。)
  • 我重新编译了它,实际上我得到了(lldb) x/s src 0x6c6c654820796568: ""
  • 这对于一个 qword 来说似乎是合理的,因为 x86-64 是 little-endian;它至少在某处包含 0x48。

标签: assembly lldb


【解决方案1】:

试试x/s &src

(lldb) x/s &src
0x00004010: "Hello"

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2015-10-03
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多