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



我有一个C程序,它(有充分的理由)分配内存,向其中复制一些代码,使用mprotect()赋予它执行权限,然后调用该代码。是的,我知道这是不可携带和不安全的,但这是有充分理由的。无论如何,我需要通过汇编代码(使用si命令)使用gdb,但它不允许我这样做——它一直在说:"无功能包含所选帧的程序计数器"

有没有办法强制gdb执行这些代码?对于这种类型的事情,我应该使用另一个调试器吗?

谢谢!

似乎您希望add-symbol-file', or从内存的命令中添加符号文件让gdb知道已经复制到该内存位置的代码。

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

stepi命令本身不需要任何符号,在您描述的场景中应该可以正常工作(尽管我实际上还没有检查它是否需要)。

您的问题真的stepi有关吗?显示调试会话的相关部分可能会让您的问题得到更好的答案。

最新更新