gpt4 book ai didi

xcode - 如何使用lldb "memory find"命令?

转载 作者:行者123 更新时间:2023-12-01 19:48:20 25 4
gpt4 key购买 nike

根据lldb在线帮助,内存查找应该像这样工作:

Find a value in the memory of the process being debugged.

Syntax: memory find <cmd-options> <address> <value> [<value> [...]]

Command Options Usage:
memory find <address> <value> [<value> [...]]
memory find [-e <expr>] [-s <name>] [-c <count>] [-o <offset>] <address> <value> [<value> [...]]

-c <count> ( --count <count> )
How many times to perform the search.

-e <expr> ( --expression <expr> )
Evaluate an expression to obtain a byte pattern.

-o <offset> ( --dump-offset <offset> )
When dumping memory for a match, an offset from the match location
to start dumping from.

-s <name> ( --string <name> )
Use text to find a byte pattern.

This command takes options and free-form arguments. If your arguments
resemble option specifiers (i.e., they start with a - or --), you must use
' -- ' between the end of the command options and the beginning of the
arguments.

我怀疑该实现与帮助信息不匹配,因为无论我使用什么语法,我似乎都会收到各种神秘错误消息之一,例如:

error: two addresses needed for memory find

error: do not know how to deal with larger than 8 byte result types. pass a string instead

error: please pass either a block of text, or an expression to evaluate.

我在 Google 上搜索了使用示例,但一无所获。如果有人有一个有效的例子,我将不胜感激。特别是,我想从指针标识的 block 的开头开始搜索给定的字节数,以查找特定(字节)值(在本例中为 255)的第一次出现。

我在 OS X 上使用 Xcode 7.0.1,lldb 版本为 lldb-340.4.70


更新

我发现 -s 选项可以工作,例如像这样:

(lldb) me fi -s "f" -- ptr ptr+8192*256
Your data was found at location: 0x11033e20c
0x11033e20c: 66 bb 58 07 d0 b7 32 7d ff 7f 00 00 66 5b e7 82 f.X...2}....f[..

可能只是 -e 选项(这是我在本例中需要的)被破坏,例如:

(lldb) me fi -e 255 -- ptr ptr+8191*256
error: expression evaluation failed. pass a string instead?

不幸的是,尝试引导 -s 选项接受转义的十六进制或十进制值似乎也不起作用:

(lldb) me fi -s "\xff" -- ptr ptr+8191*256
Your data was not found within the range.

(lldb) me fi -s "\255" -- ptr ptr+8191*256
Your data was not found within the range.

最佳答案

此问题已在开源 LLDB 中修复,修订版 243893 ( http://llvm.org/viewvc/llvm-project?view=revision&revision=243893 )

我无法对 Xcode 中此修复程序的可用性发表任何评论,但您可以尝试的一件事是从源代码编译 LLDB 并使用带有修复程序的手工构建的 LLDB 来调试您的问题

关于xcode - 如何使用lldb "memory find"命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com