【问题标题】:How to execute a function (identified by pointer) from lldb如何从 lldb 执行函数(由指针标识)
【发布时间】:2014-08-25 09:21:54
【问题描述】:

如何在 LLDB 中调用常规函数(不是块)?

我尝试过使用:

expr int $addr = 0x51bb45
expr (void (^)(void))$addr
expr $0()

但我收到错误消息“在初始恢复后没有运行事件,而是停止了。无法执行功能;结果是 eExecutionSetupError'

这是函数的声明方式,但我没有符号... extern "C" void do_something(void)

编辑:

解决方案是使用:

(void (*)(void))$addr

【问题讨论】:

  • 这看起来不像是块指针。 (void (*)(void))$addr 怎么样?

标签: c++ function debugging lldb


【解决方案1】:

如果函数是这样声明的,那么它是一个块指针,而不是一个常规函数。正如 nos 所说,如果它是函数指针,它将在声明中带有 * 。 lldb 目前不知道如何调用块指针:像 C++ 和 ObjC 方法一样,它们需要正确配置的人工第一个参数,而 lldb 不知道如何为块执行此操作。

【讨论】:

  • 什么没有说它是正确的。它不是块指针 - 我正在尝试运行一个函数,但只找到了一个块指针的示例。
猜你喜欢
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2017-03-11
  • 2012-01-19
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多