0

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

有没有办法强制 gdb 执行这段代码?我应该使用另一个调试器来代替这种类型的东西吗?

谢谢!

4

3 回答 3

1

似乎您希望add-symbol-file', oradd-symbol-file-from-memory' 命令让 gdb 知道已复制到该内存位置的代码。

于 2011-06-09T05:28:45.167 回答
1

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

于 2011-06-11T18:36:38.127 回答
0

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

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

于 2011-06-08T22:12:19.287 回答