LLDB是否有便利变量?如果是这样,我该如何使用它们?如果不是,是否有类似的东西可以使用?
参考:http://software.intel.com/sites/products/documentation/hpc/atom/application/debugger/commands143.html
我试图使用lldb进行c ++调试,如果抛出异常,我想暂停,比如gdb catch throw,我在lldb文档中找不到等价物.
在我工作的某个时刻,XCode po和p命令停止工作.无论我输入什么,它都不会产生输出:
(gdb) po self
(gdb) po [self name]
(gdb) po [UITableView class]
(gdb) po @"Hello"
(gdb) p indexPath.row
(gdb) print indexPath.row
(gdb) po fjkldsjflksdjklwjfkljfkldsjflk
(gdb)
Run Code Online (Sandbox Code Playgroud)
当我输入这些命令中的任何一个时,命令行只会转到下一行,在那里它打印蓝色(gdb),但没有输出.
我尝试了以下步骤:
XCode中的其他调试工具似乎工作正常:断点,逐步执行,自动变量检查窗口等.
有任何想法吗?
编辑:即使重新安装XCode后也不起作用.
我正在尝试在Xcode 8中使用LLDB来调试非常基本的STL.我曾经能够打印这样的矢量:
p myvector[0]
Run Code Online (Sandbox Code Playgroud)
看第一个矢量索引中的内容.现在,当我这样做时,我收到此错误:
error: Couldn't lookup symbols:
__ZNSt3__16vectorI9my_classNS_9allocatorIS1_EEEixEm
Run Code Online (Sandbox Code Playgroud)
相反,我必须输入:
p myvector.__begin_[0]
Run Code Online (Sandbox Code Playgroud)
为了获得任何输出.
我尝试从LLDB svn存储库导入libcxx.py和unordered_multi.py脚本,但这似乎没有改变任何东西.
有没有人能够通过libc ++从LLDB获得任何有用的输出?
我试图让LLDB(在带有OS X应用程序的Xcode 4.3.2中运行)不停止某些信号.如果我进入
process handle SIGUSR2 -n true -p true -s false
在调试控制台上它工作正常,LLDB不再停止在SIGUSR2上.
但是,如果我放
command process handle SIGUSR2 -n true -p true -s false
进入〜/ .lldbinit似乎被忽略了.此文件中的其他命令(例如别名)工作正常.
如何使LLDB永远不会停止某些信号?
由于gdb现在在Mac上工作变得繁重(至少我觉得我正在与Apple抗争),我已经开始玩lldb了.
是否有一个等效的模式,gdb -tui它显示了一个漂亮的,持久的源视图,以及从命令行运行lldb独立时你在哪里?显然,在Xcode中,有这样的显示器,但我最终将我的大部分代码部署到Linux盒子,并且更愿意在两个平台上使用相同的开发环境(即vim,Makefile,autotools等).
如何在带有LLDB的Swift应用程序中绘制变量的值?
早些时候它就像 po variable_name
现在我经常会遇到一些令人讨厌的错误,例如:
(lldb) po a
error: <EXPR>:11:5: error: use of unresolved identifier '$__lldb_injected_self'
$__lldb_injected_self.$__lldb_wrapped_expr_2(
^
Run Code Online (Sandbox Code Playgroud) 我需要在实际设备上调试ios应用程序的启动...并且通过启动我的意思是当操作系统控制应用程序时执行的第一条指令.不是"主要".此外,此应用程序没有任何符号(即调试信息不可用..).我不在乎是否必须在CPU指令级调试.我知道该怎么做(已经做了30多年).我希望调试器在控件即将传输到应用程序时停止.当我使用Attach | by Name命令运行时,它只是说"完成运行".
哦,这个应用程序不是在XCode中构建的.然而,它是我构建,签名和配置并移动到设备的应用程序.应用程序运行,因为我可以看到控制台输出.万一你以为我是一个黑客试图调试别人的应用程序.
这对于一个高级订单怎么样?我敢打赌,没有人可以回答这个问题......我无法找到任何有关如何使用XCode构建的项目执行此操作的信息.我想知道苹果霸主是否根本不可能或"允许"它?
你怎么说,Stack Overflow众神?
更新:我应该澄清一些事情.此应用程序不是使用任何商用或开源工具构建的.我与工具供应商合作创建编译器,框架和IDE.IOW,你不能得到这个工具...... 在引导新工具链的过程中,必须经常采用一些非常低级的原始调试.特别是如果工具生成的代码中存在错误.
当我运行单元测试并想要调试某些东西时,我设置了一个断点并输入例如"po myVariable".我从LLDB得到的答复是:
error: Couldn't IRGen expression, no additional error
Run Code Online (Sandbox Code Playgroud)
例:
我有这里定义的最小的小单元测试:
class MyExampleTests: XCTestCase {
func testLLDB() {
let world = "World"
print("Breakpoint goes here")
print("Hello \(world)")
}
}
Run Code Online (Sandbox Code Playgroud)
我在"Breakpoint goes here"中设置断点,当我跑步时,我做'po world':
(lldb) po world
error: Couldn't IRGen expression, no additional error
Run Code Online (Sandbox Code Playgroud)
有关如何使其评估我的表达的任何建议吗?