如何根据芯片类型(M1/Intel)导入Facebook的Chisel fbchisellldb.py?
How to import Facebook's Chisel fbchisellldb.py depend on the chip type(M1/Intel)?
我在 ~/.lldbinit.
添加以下 shell 代码
if [[ $(uname -p) == 'arm' ]]; then
command script import /opt/homebrew/opt/chisel/libexec/fbchisellldb.py
fi
if [[ $(uname -p) == 'i386' ]]; then
command script import /usr/local/opt/chisel/libexec/fbchisellldb.py
fi
script fbchisellldb.loadCommandsInDirectory('/path/to/fbchisellldb.py')
但事实证明.lldbinit 不支持shell code/syntax,检测芯片类型并动态导入的正确方法是什么fbchiselldb.py。
error: 'if' is not a valid command.
error: error: No value
error: error: No value
error: error: No value
error: error: No value
Error loading Chisel (errno None)
error: 'if' is not a valid command.
error: module importing failed: invalid pathname
error: error: No value
error: error: No value
error: error: No value
error: error: No value
Error loading Chisel (errno None)
lldb 将脚本任务委托给脚本解释器。我们认为 Python 的人在创造可用的语言方面会比我们想出的任何东西做得更好,而且 Python 是众所周知的,所以我们不会强迫人们学习另一组 shell 的怪癖,比如 if 测试和循环结构。因此,如果您需要在与 lldb 的交互中使用逻辑测试和循环,您可以在 Python 中使用脚本命令或通过导入模块来实现。
你可以在你的 ~/.lldbinit 中使用 script
命令 one-lines,或者你可以将脚本文本内联到你的 .lldbinit 中,但我通常在 ~ 中保留一个 .py 文件/.lldb 我在 .lldbinit 中 command script import
,并让它完成这种工作。以这种方式添加和调试更容易。
如果你输入一个函数的形式:
def __lldb_init_module(debugger, dict):
在 Python 模块中,当使用 command script import
导入模块时,lldb 将 运行 该函数(这是使用 command script import
和 script import
).这允许您向导入此模块的调试器添加命令。
所以你可以这样做:
import platform
def __lldb_init_module(debugger, dict):
if platform.machine() == 'arm64':
debugger.HandleCommand("command script import <ONE_CHISEL>")
else
debugger.HandleCommand("command script import <OTHER_CHISEL>")
我在 ~/.lldbinit.
添加以下 shell 代码if [[ $(uname -p) == 'arm' ]]; then
command script import /opt/homebrew/opt/chisel/libexec/fbchisellldb.py
fi
if [[ $(uname -p) == 'i386' ]]; then
command script import /usr/local/opt/chisel/libexec/fbchisellldb.py
fi
script fbchisellldb.loadCommandsInDirectory('/path/to/fbchisellldb.py')
但事实证明.lldbinit 不支持shell code/syntax,检测芯片类型并动态导入的正确方法是什么fbchiselldb.py。
error: 'if' is not a valid command.
error: error: No value
error: error: No value
error: error: No value
error: error: No value
Error loading Chisel (errno None)
error: 'if' is not a valid command.
error: module importing failed: invalid pathname
error: error: No value
error: error: No value
error: error: No value
error: error: No value
Error loading Chisel (errno None)
lldb 将脚本任务委托给脚本解释器。我们认为 Python 的人在创造可用的语言方面会比我们想出的任何东西做得更好,而且 Python 是众所周知的,所以我们不会强迫人们学习另一组 shell 的怪癖,比如 if 测试和循环结构。因此,如果您需要在与 lldb 的交互中使用逻辑测试和循环,您可以在 Python 中使用脚本命令或通过导入模块来实现。
你可以在你的 ~/.lldbinit 中使用 script
命令 one-lines,或者你可以将脚本文本内联到你的 .lldbinit 中,但我通常在 ~ 中保留一个 .py 文件/.lldb 我在 .lldbinit 中 command script import
,并让它完成这种工作。以这种方式添加和调试更容易。
如果你输入一个函数的形式:
def __lldb_init_module(debugger, dict):
在 Python 模块中,当使用 command script import
导入模块时,lldb 将 运行 该函数(这是使用 command script import
和 script import
).这允许您向导入此模块的调试器添加命令。
所以你可以这样做:
import platform
def __lldb_init_module(debugger, dict):
if platform.machine() == 'arm64':
debugger.HandleCommand("command script import <ONE_CHISEL>")
else
debugger.HandleCommand("command script import <OTHER_CHISEL>")