如何强制GDB执行没有符号的代码

时间:2011-06-08 15:55:46

标签: assembly gdb mprotect

我有一个C程序(有充分理由)分配内存,复制一些代码,使用mprotect()赋予它执行权限,然后调用该代码。 是的我知道这是不可移植和不安全的,但这是有充分理由的。 无论如何,我需要通过汇编代码单步执行gdb(使用si命令)但它不会让我 - 它一直说: “没有功能包含所选帧的程序计数器”

有没有办法强制gdb执行此代码?是否有另一个调试器,我应该使用这种类型的东西?

谢谢!

3 个答案:

答案 0 :(得分:1)

好像你想要add-symbol-file', or add-symbol-file-from-memory'命令 让gdb知道已复制到该内存位置的代码。

答案 1 :(得分:1)

在开始display/i $pc / si之前,您应该可以使用stepi来完成代码。这告诉它在每次打印提示之前显示当前指令的反汇编。

答案 2 :(得分:0)

stepi命令本身不需要任何符号,并且在您描述的场景中应该正常(虽然我实际上没有检查它是否存在)。

您的问题是否真的stepi?显示调试会话的相关部分可能会打开您的问题以获得更好的答案。