【问题标题】:gdb step into dynamic functiongdb步入动态函数
【发布时间】:2012-06-21 18:21:00
【问题描述】:

我正在调试函数调用的 OpenSSL 库中的段错误

s->method->ssl_read(s,buf,num)

由动态函数指针设置。当它指向时我想踏入它

ssl23_read

但是在ssl23_read 中设置断点不起作用。我不确定调试如何与动态函数指针一起工作,对我来说很直观答案可能是“不同”或“不是”。在这种情况下,您会使用什么调试策略?

顺便说一句,仅仅交换调用是行不通的,或者至少不容易 - OpenSSL 库进行了一些检查,以确保您不会直接调用该函数。

【问题讨论】:

    标签: c debugging gdb openssl function-pointers


    【解决方案1】:

    在 ssl23_read 中设置断点不起作用

    以什么方式不起作用?

    如果 GDB 设置了断点,但断点从不触发,那么

    1. 该函数实际上没有被调用,或者
    2. GDB 中存在错误,它设置了错误的断点。

    如果是 2,请检查最近的 GDB 中是否仍然存在该错误,并为它提交错误报告。作为一种解决方法,break * &ssl23_read 可能会设置断点以使其触发。

    【讨论】:

    • 其实它看起来像(1)。我错误地确定了它设置的功能,只是一个 gdb“打印”命令告诉我正确的。事实证明,我的错误很奇怪。
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多