【问题标题】:set a breakpoint, when called: return and continue调用时设置断点:返回并继续
【发布时间】:2011-04-10 00:33:35
【问题描述】:

我知道如何在 gdb 中执行此操作。我会附上,然后:

break myfunction

commands

return
cont
end

cont

我想知道是否有办法在 c 中做到这一点?我的代码已经用于读取内存地址和写入内存地址。它会自动找到 pid 并执行相关操作。我坚持使用断点。

【问题讨论】:

    标签: objective-c c memory process gdb


    【解决方案1】:

    如果您在谈论某种手写调试器,您可以使用 IP 值设置断点;从字面上看,当 IP 达到某个特定值时,您会停止正在调试的程序并执行一些例程(例如,前往调试器进程)。要使用函数名,您应该像在 GDB 中那样使用符号表。

    【讨论】:

      【解决方案2】:

      不太清楚您要达到的目标。

      您展示的 GDB 序列只会让 myfunction 立即返回。

      假设您希望您的mini-debugger 具有相同的效果,只需将ret(x86 上的0xC3)的操作码写入myfunction 的地址即可;根本不需要做断点。

      【讨论】:

      • 有问题的函数在一个外部程序中,此时我的程序附加到它并对其内存执行读/写操作。所以我想解决方案需要与目标内存有关,以及如何处理它......
      • 没错。您的程序将 RET 操作码写入目标,并可能在其工作完成时分离。
      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2020-12-30
      • 2023-04-05
      相关资源
      最近更新 更多