由于标识符未知,LLDB 无法计算函数
lldb cannot evaluate function because of unknown identifier
我有一个优化的二进制文件,它具有 c++ 结构和类,我能够导出类函数的符号并为类函数设置断点,但是,我似乎无法做这样的基本事情:expr ((ns::SomeClass*)$r0)->toString()
LLDB 报告 NS 的未知标识符。
从一些谷歌搜索中,我发现了一些关于 expr 前缀文件的内容,并尝试编写一个描述命名空间的标头,但我仍然收到相同的错误。也许我做错了,或者 lldb 的另一个功能可以允许这样做?
我的前缀文件非常简单,我只是想看看我是否可以越过未知标识符位并进入应用于 SomeClass 的错误。
prefix.mm
namespace ns { }
对于这种事情,使用损坏的名称并直接传递"this"指针来调用它可能更容易,即:
(lldb) expr (const char *) _ZN2ns9SomeClass8toStringEv($r0)
否则,您必须在前缀文件中放置该类及其方法的挖空版本,即:
> cat prefix.h
namespace ns
{
class SomeClass
{
public:
const char *toString();
};
}
这将允许您执行以下操作:
(lldb) expr ((ns::SomeClass *)$rdi)->toString()
相关文章:
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何计算函数的时间复杂度?
- 有没有办法计算函数内arry的长度而不是作为参数传入?
- 如何计算函数的搜索复杂度
- 使用引用参数计算函数
- 递归计算函数f = n!/(c^n)的值
- 为什么这个C++字符串长度计算函数比另一个更快
- 用递归计算函数f(n)
- C++平均计算函数返回0
- 有没有比生成/累积更快的方法来计算函数结果的平均值
- 如何计算函数的时间
- 由于标识符未知,LLDB 无法计算函数
- 从 C++11 中的列表中选择并计算函数
- 计算后缀表达式.pop() 返回不正确的值来计算函数
- 在计算函数返回值之前或之后是否销毁了局部变量
- 计算函数指针的类型
- 计算函数中的模给出了与直接使用%运算符不同的答案
- 提升:以秒/毫/微米/纳米为单位计算函数的运行时间
- 行列式计算函数的优化
- 如何在c++中计算函数的执行时间和cpu消耗