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

Debugging 如何捕获gdb中函数返回的随机值,debugging,gdb,Debugging,Gdb,在C语言中,如果有一个函数返回“始终”相同的结果,则可以执行以下操作: (gdb) p foo() 但是如果这个函数总是返回一个随机结果,那么如何在不使用变量的情况下打印该值呢。其他细节,如果您没有函数的调试信息,那么它来自剥离库 (gdb)p myRandom()无法使用,它将导致与应用程序使用的值不同的结果 你可能会问:“为什么你要使用一个随机函数而不使用它的结果”,让我们说,返回只是该函数所做的额外事情 (gdb)p myRandom() 无法使用,它将导致与应用程序使用的值不同的结果

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

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

(gdb)p myRandom()
无法使用,它将导致与应用程序使用的值不同的结果

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

(gdb)p myRandom()
无法使用,它将导致与应用程序使用的值不同的结果

您可能希望在应用程序调用的特定位置检查返回给应用程序的值
myRandom()

您需要在紧跟
调用之后的指令上设置断点,然后检查返回值的寄存器。例如,在
i*86
上,值在
eax
寄存器中返回,因此您将执行
打印$eax

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

类似问题。