Xcode中的LLDB Python脚本

Xcode中的LLDB Python脚本,第1张

概述我刚刚发现了LLDB的 this便利功能,它允许我编写Python脚本,当我在LLDB中的断点时,可以访问帧中的变量.但是在Xcode(v4.5.2)中使用它时遇到了一些问题.首先,我找不到任何说明我应该保留这些Python脚本的地方,以便我可以从LLDB的命令行导入它们.其次,在我将脚本输入到LLDB后,键盘输入有点错误:退格键不会删除屏幕上的字符,但会有效地从命令中删除它.因此,输入primt 我刚刚发现了LLDB的 this便利功能,它允许我编写Python脚本,当我在LLDB中的断点时,可以访问帧中的变量.但是在Xcode(v4.5.2)中使用它时遇到了一些问题.首先,我找不到任何说明我应该保留这些Python脚本的地方,以便我可以从LLDB的命令行导入它们.其次,在我将脚本输入到LLDB后,键盘输入有点错误:退格键不会删除屏幕上的字符,但会有效地从命令中删除它.因此,输入primt< bsp>< bsp>< bsp> int实际上意味着打印,但它仍然在终端上作为primtint出现.这只是美学,但它很烦人!

有人能指出我使用Python与LLDB的一些Xcode特定资源吗?

编辑:Here是另一个有趣的链接,说你可以使用Python为Python创建变量的自定义摘要,但我找不到任何与此相关的内容.

解决方法 不幸的是,在Xcode,lldb和Python解释器之间,交互式控制台存在一些问题.请在 @L_404_2@提交错误报告 – 我不知道是否已经有关于此特定问题的错误报告,尽管这里的问题一般都是已知的.如果您正在探索交互式python脚本界面,可能需要使用命令行lldb工具;效果更好.

我将lldb的所有python脚本放在〜/ lldb中.在我的〜/ .lldbinit文件中我将它们输入.例如,我有〜/ lldb / stopifcaller.py这是

import lldb# Use this like# (lldb) command script import ~/lldb/stopifcaller.py# (lldb) br s -n bar# (lldb) br comm add --script-type python -o "stopifcaller.stop_if_caller(frame,'foo')" 1def stop_if_caller(current_frame,function_of_interest):  thread = current_frame.GetThread()  if thread.GetNumFrames() > 1:    if thread.GetFrameatIndex(1).GetFunctionname() != function_of_interest:      thread.GetProcess().Continue()

我会将命令脚本导入到我的〜/ .lldbinit文件中以自动加载它,如果这是我想要的.这个特殊的例子为断点#1添加了一个python命令 – 当lldb在断点处停止时,它将查看调用函数.如果调用函数不是foo,它将自动恢复执行.实质上,断点1只会在foo()调用bar()时停止.请注意,在执行命令脚本导入时,Xcode 4.5 lldb可能存在问题〜/ … – 您可能需要输入主目录的完整路径(/ Users / benwad /或其他).我不记得了 – Xcode 4.5有一些波形扩展问题已经修复了一段时间.

您可以直接向〜/ .lldbinit添加简单类型摘要.例如,如果我正在调试lldb本身,那么ConstString对象通常只有一个我感兴趣的字段,即m_string ivar.所以我有

type summary add -w lldb lldb_private::ConstString -s "${var.m_string}"

或者,如果它是类型addr_t,我总是希望格式化为十六进制,所以我有

type format add -f x lldb::addr_t

如果你想向lldb添加一个新命令,你会得到一个像〜/ lldb / sayhello.py这样的python文件,

import lldbdef say_hello(deBUGger,command,result,dict):  print 'hello'def __lldb_init_module (deBUGger,dict):  deBUGger.HandleCommand('command script add -f sayhello.say_hello hello')

你会把它加载到lldb之类的

(lldb) comma script import  ~/lldb/sayhello.py(lldb) hellohello(lldb)

大多数情况下,当你添加一个用python编写的命令时,你将使用shlex和optparse库,这样命令就可以进行选项解析,你将添加一个__doc__字符串 – 我省略了这些以保持示例简单.

总结

以上是内存溢出为你收集整理的Xcode中的LLDB Python脚本全部内容,希望文章能够帮你解决Xcode中的LLDB Python脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存