【发布时间】:2012-07-01 21:58:13
【问题描述】:
假设我想反汇编文件 x 的 m-n 行,其中文件 x 不在当前上下文中。这种操作是否可行,如果可以,如何操作?注意:我正在使用 x86 Linux。
【问题讨论】:
-
我确定这取决于优化标志,而您只能在
-O0上真正做到这一点。
假设我想反汇编文件 x 的 m-n 行,其中文件 x 不在当前上下文中。这种操作是否可行,如果可以,如何操作?注意:我正在使用 x86 Linux。
【问题讨论】:
-O0 上真正做到这一点。
您可以使用带有/m 键的反汇编命令在对应的汇编代码前面显示原始C 行:
disassemble /m 'my_file.c'::my_function
这不需要任何初步步骤,尽管它似乎不接受您所要求的源代码行范围。
【讨论】:
作为一个相当晚且可能是多余的答案,但希望对像我这样的人有用,我想对此和your other question on getting the address of a line number进行完整的回复。
disassemble 命令can disassemble address ranges: disassemble [Start],[End]。但是你想反汇编行范围。
要获取源代码行的地址,您可以使用the info line command:info line [File]:[Line]。
【讨论】:
这是一种笨拙的方法:在您感兴趣的行上设置一个断点,断点确认会为您提供一个地址。然后清除断点并在该地址上运行disas 或x/20i。
【讨论】: