如何在XCode中以lldb摘要格式调用C ++方法?

时间:2015-06-11 19:25:33

标签: xcode debugging lldb data-formatters

XCode版本6.3.2(6D2105)

我试图显示的变量是boost::posix_time::ptime类型,但我的问题适用于任何C / C ++类型。 documentation for boost::posix_time::ptime指定date()方法检索时间(年,月,日)的日期部分,time_of_day返回时间的小数部分(小时,分钟,秒)( ) 方法。因此,在调试器处于活动状态时右键单击列表中的变量允许我设置摘要格式,并且只显示日期的年份部分应该类似于{$VAR.date().year()}。理想情况下,我想在调试器视图中的变量旁边的摘要中打印2015/6/11 3:20:29,但是现在我只是想显示年份部分。

但是,显示“摘要不可用”,输出窗口打印:

error: call to a function 'boost::date_time::date<boost::gregorian::date, boost::gregorian::gregorian_calendar, boost::gregorian::date_duration>::year() const' ('_ZNK5boost9date_time4dateINS_9gregorian4dateENS2_18gregorian_calendarENS2_13date_durationEE4yearEv') that is not present in the target

documentation(PDF格式)声明摘要格式表达式可以包含函数和方法调用,但给出的示例是针对Objective C而不是C ++。这在主要部分Writing Data Formatters和子部分Expressions, including function or method calls

1 个答案:

答案 0 :(得分:1)

您收到的错误表示您正在尝试调用您正在运行的程序中不存在的功能。如果函数只是内联存在,那么可能会发生C ++。调试器目前还不知道如何从头文件构建可调用函数的版本,我们当然不能调用它的内联版本。您可以通过在二进制文件上运行nm来验证这一点,看看是否确实存在这样的符号。

另一种可能性就是有这样一个函数,但它不同于const或者其中一个参数的类型与表达式解析器猜测它的类型略有不同,所以我们正在寻找一个稍微不同的错位名字,而不是找到它。如果你对二进制文件进行nm时确实显示了看似合理的候选人而我们没有调用它,请向bug报告者提交一个错误:

http://lldb.llvm.org

所以有人可以看看它。