代码之家  ›  专栏  ›  技术社区  ›  Josh Kelley

将gdb与内联函数一起使用

  •  4
  • Josh Kelley  · 技术社区  · 15 年前

    我想用 gdb 在死后模式下,具有崩溃进程的核心转储。我可以得到一个堆栈跟踪,但不是告诉我出错函数中的实际位置, 显示有问题的函数调用的两行内联函数的行号。

    内联函数被称为很多很多地方;我如何找到是哪个电话触发了崩溃?如何在内联函数周围立即找到代码?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Rupert    14 年前

    转到有问题的堆栈帧,打印指令点(例如p$rip), 然后使用它手动查找,例如“addr2line-e-i 0x84564756”。

    这不能扩展,但至少它可以工作。

        2
  •  2
  •   Employed Russian    15 年前

    我假设“对内联函数的多次调用”都发生在一个“有问题的函数”中(否则你的问题对我来说没有意义)。

    最好的办法是在中记录崩溃点的IP地址 GDB ,然后使用 "objdump -dS ./a.out" 并在输出中找到该IP。

        3
  •  -1
  •   Sasha Sasha    15 年前