如何捕获gdb中函数返回的随机值

时间:2012-12-05 11:40:08

标签: debugging gdb

在C中,如果你有一个函数返回“always”,你可以做同样的结果:

(gdb) p foo()

但是如果此函数总是返回随机结果,那么如何在不使用变量的情况下打印THAT值。其他细节,如果你没有该函数的调试信息,它来自一个剥离的lib。

无法使用

(gdb) p myRandom(),它会产生与应用程序使用的值不同的内容。

你可能会问:“你为什么要使用随机函数而不使用它的结果”,让我们说返回只是func所做的一件事。

1 个答案:

答案 0 :(得分:2)

  

(gdb)p myRandom()
  不能使用,它会产生与应用程序使用的值不同的东西。

大概你想检查在应用程序调用{​​{1}}的特定位置返回给应用程序的值。

您需要在紧跟myRandom()之后的指令上设置断点,然后检查返回值的寄存器。例如,在CALL上,该值会在i*86寄存器中返回,因此您将执行eax

或者,在print $eax上设置断点,然后执行myRandom()命令(您不需要调试信息),然后检查返回寄存器。