由于标识符未知,lldb无法评估函数

时间:2013-10-31 21:47:16

标签: c++ llvm lldb

我有一个优化的二进制文件,它具有c ++结构和类,我可以为其导出符号并为类函数设置断点,但是,我似乎无法执行这样的基本操作:expr ((ns::SomeClass*)$r0)->toString() lldb报告ns的未知标识符。

从谷歌搜索中我发现了一些关于expr前缀文件的内容并尝试编写描述命名空间的标题,但我仍然得到同样的错误。也许我做错了或lldb的另一个功能是否允许这个?

我的前缀文件非常简单,我只是想知道是否可以通过未知标识符位以及应用于SomeClass的错误。

prefix.mm

namespace ns { }

1 个答案:

答案 0 :(得分:1)

对于这种事情,可能更容易使用受损的名称调用它并直接传递“this”指针,即:

(lldb) expr (const char *) _ZN2ns9SomeClass8toStringEv($r0)

否则,你必须在你的前缀文件中放入一个挖空的类及其方法,即:

 > cat prefix.h 
   namespace ns
   {
       class SomeClass
       {
       public:
           const char *toString();
       };
   }

允许你这样做:

(lldb) expr ((ns::SomeClass *)$rdi)->toString()