如何从lldb执行函数(由指针标识)

时间:2014-08-25 09:21:55

标签: c++ function debugging lldb

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

我尝试过使用:

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

但我得到一个错误'在小小的恢复后没有得到跑步的事件,而是被停止了。无法执行功能;结果是eExecutionSetupError'

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

编辑:

解决方案是使用:

(void (*)(void))$addr

1 个答案:

答案 0 :(得分:1)

如果这是声明函数的方式,则它是块指针而不是常规函数。正如nos所说,如果它是一个函数指针,它将在声明中有一个*。 lldb目前还不知道如何调用块指针:如C ++& ObjC方法他们需要一个正确的人为的第一个参数,而lldb不知道如何为块做到这一点。