gpt4 book ai didi

python - 在 Python 脚本中使用 LLDB 命令

转载 作者:行者123 更新时间:2023-11-30 10:01:44 25 4
gpt4 key购买 nike

我正在编写一个在 Xcode 的 LLDB 中使用的 Python 脚本。我已经启动并运行了这个简单的脚本:

import lldb

def say_hello(debugger, command, result, dict):
print command

def __lldb_init_module (debugger, dict):
debugger.HandleCommand('command script add -f sayhello.say_hello hello')

我想做的是能够在 Python 脚本中使用 LLDB 的 XCUIApplication().debugDescription 函数的输出。那么有没有办法:

a) 在 python 脚本中访问 XCUIApplication()。

b) 将 XCUIApplication().debugDescription 作为输入传递给 Python 脚本中的 say_hello 函数。

最佳答案

IIRC XCUIApplication是XCTest框架提供的函数,因此它是您正在调试的程序中的函数。因此,您可以像调用任何其他函数一样调用它,在 SBTarget 或 SBFrame 上使用“EvaluateExpression”API。表达式的求值结果将在 SBValue 中返回给您,您可以用它打印该结果或您需要的任何内容。

注意,除非您需要支持非常旧的 Xcode (6.x),否则使用新形式的 python 命令会更方便:

def command_function(debugger, command, exe_ctx, result, internal_dict):

exe_ctx 是运行命令的 SBExecutionContext。如果你这样做,那么你可以这样做:

def command_function(debugger, command, exe_ctx, result, internal_dict):
options = lldb.SBExpressionOptions()
thread = exe_ctx.GetThread()
if thread.IsValid():
value = thread.GetFrameAtIndex(0).EvaluateExpression("XCUIApplication().debugDescription", options)
if value.GetError().Success():
# Do whatever you want with the result of the expression

关于python - 在 Python 脚本中使用 LLDB 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38138060/

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