网站开发人员需要什么要求,gta5买资产网站在建设,免费漫画软件 全免费,wordpress没权限环境#xff1a;
MacOS#xff1a; 14.3Xcode#xff1a; Version 15.0Qt#xff1a;Qt 6.5.3
前言
Xcode 中显示 预览 QString 特别不方便, 而Qt官方的 lldb 脚本debugger/lldbbridge.py一直加载失败#xff0c;其他第三方的脚本都 不兼容当前的 环境。所以自己研究写…环境
MacOS 14.3Xcode Version 15.0QtQt 6.5.3
前言
Xcode 中显示 预览 QString 特别不方便, 而Qt官方的 lldb 脚本debugger/lldbbridge.py一直加载失败其他第三方的脚本都 不兼容当前的 环境。所以自己研究写了当前的教程。 当前方法同样适用于其他非 苹果内置类型的预览和显示。
原始效果如下 优化后的效果
创建步骤
检测 ~/.lldbinit 文件 判断文件是否存在不存在则创建。 每次 lldb 启动都会 加载 ~/.lldbinit 文件的命令可以理解为存在硬盘里面的默认用户配置。创建 python 脚本文件 在任意路径创建一个python 文件。 我这里创建的python文件的路径为~/Documents/source/PYTest/lldb_qt_value.py~/.lldbinit 写入命令 这里lldb 在初始化的时候就会导入 这个python文件# 加载 lldb 预览 qt 内置成员的 脚本
command script import ~/Documents/source/PYTest/lldb_qt_value.py回到 lldb_qt_value.py 文件写具体脚本
import lldbdef QString_summary(value, internal_dict):summary value.GetChildMemberWithName(d).GetChildMemberWithName(ptr).GetSummary()if summary Summary Unavailable:return NULLreturn summary[2:-1]# lldb 的 默认初始化 函数
def __lldb_init_module(debugger, internal_dict):debugger.HandleCommand(type summary add QString -F lldb_qt_value.QString_summary)print(lldb_qt_value.py 正在为您服务.)具体逻辑如下
lldb 初始化调用 __lldb_init_module 函数创建一个 QString 的钩子函数。函数为 lldb_qt_value 文件的 QString_summary方法。初始化 会在控制台打印 lldb_qt_value.py 正在为您服务. 当 QString 类型被预览时(或者控制台输入 po 或 p 命令) 会进入这个函数QString_summary获取我们准备替换显示的值, 获取路径为test1 - d - ptr - summary. 具体对应这个代码 summary value.GetChildMemberWithName(d).GetChildMemberWithName(ptr).GetSummary() 判断如果是空的 就返回 NULL不为空则 去除 前面两个字符 u 和最后 一个 。 从uABC测试 - ABC测试返回处理后的值供lldb 预览显示
结果
QString 和 std::vectorQString 和 其他包含QString的类型都可以正确格式化。 如果需要其他 Qt 类型或者 自定义类型都可以用此方法 显示。 最终脚本预览如下
参考
https://lldb.llvm.org/use/variable.html https://lldb.llvm.org/python_api/lldb.SBValue.html