我有一个优化的二进制文件,它具有c ++结构和类,我可以为其导出符号并为类函数设置断点,但是,我似乎无法执行这样的基本操作:expr ((ns::SomeClass*)$r0)->toString()
lldb报告ns的未知标识符。
从谷歌搜索中我发现了一些关于expr前缀文件的内容并尝试编写描述命名空间的标题,但我仍然得到同样的错误。也许我做错了或lldb的另一个功能是否允许这个?
我的前缀文件非常简单,我只是想知道是否可以通过未知标识符位以及应用于SomeClass的错误。
prefix.mm
namespace ns { }
答案 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()