【问题标题】:gdb disassemble by line numbergdb 按行号反汇编
【发布时间】:2012-07-01 21:58:13
【问题描述】:

假设我想反汇编文件 x 的 m-n 行,其中文件 x 不在当前上下文中。这种操作是否可行,如果可以,如何操作?注意:我正在使用 x86 Linux。

【问题讨论】:

  • 我确定这取决于优化标志,而您只能在 -O0 上真正做到这一点。

标签: c gdb


【解决方案1】:

您可以使用带有/m 键的反汇编命令在对应的汇编代码前面显示原始C 行:

disassemble /m 'my_file.c'::my_function

这不需要任何初步步骤,尽管它似乎不接受您所要求的源代码行范围。

【讨论】:

    【解决方案2】:

    作为一个相当晚且可能是多余的答案,但希望对像我这样的人有用,我想对此和your other question on getting the address of a line number进行完整的回复。

    disassemble 命令can disassemble address ranges: disassemble [Start],[End]。但是你想反汇编行范围。

    要获取源代码行的地址,您可以使用the info line commandinfo line [File]:[Line]

    【讨论】:

      【解决方案3】:

      这是一种笨拙的方法:在您感兴趣的行上设置一个断点,断点确认会为您提供一个地址。然后清除断点并在该地址上运行disasx/20i

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 2014-09-09
        • 2010-12-07
        • 2010-12-19
        • 2019-11-23
        • 2018-09-25
        • 2017-12-25
        相关资源
        最近更新 更多