0

在 C 中,如果您有一个返回“始终”相同结果的函数,您可以执行以下操作:

(gdb) p foo()

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

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

您可能会问:“为什么要使用随机函数而不使用其结果”,可以说返回只是该函数所做的额外事情。

4

1 回答 1

2

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

大概您想在应用程序调用的特定位置检查返回给应用程序的值myRandom()

您需要在紧跟在 之后的指令上设置断点CALL,然后检查返回值的寄存器。例如, on i*86,值在eax寄存器中返回,所以你会做print $eax.

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

于 2012-12-05T15:05:37.403 回答