LLDB Python脚本中与gdb.GdbError()等效的功能如何实现?
解决方案
lldb的Python API没有提供和gdb.GdbError完全同名的内置异常类,但你可以通过直接抛出未捕获的Python异常实现完全一致的效果:lldb的脚本执行器遇到未处理的Python异常时,会自动打印完整堆栈回溯、输出错误信息,然后终止当前脚本运行,退回到lldb交互提示符。
你可以直接抛出内置的RuntimeError传入自定义错误信息即可,示例代码如下:
def isFOOEnabled(): sb = lldb.frame.EvaluateExpression("foo") # 更规范的写法是优先判断SBValue携带的错误对象,而非仅判断GetValue是否为None err = sb.GetError() if err.Fail(): raise RuntimeError(f"Fatal error: {err.GetCString()}") return sb
触发异常时的输出效果和你提供的gdb示例完全匹配,同时你传入的自定义错误信息会正常展示,不会丢失。
内容的提问来源于stack exchange,提问作者Peeter Joot
相关产品推荐
相关产品推荐

