Debugging 如何捕获gdb中函数返回的随机值
在C语言中,如果有一个函数返回“始终”相同的结果,则可以执行以下操作:Debugging 如何捕获gdb中函数返回的随机值,debugging,gdb,Debugging,Gdb,在C语言中,如果有一个函数返回“始终”相同的结果,则可以执行以下操作: (gdb) p foo() 但是如果这个函数总是返回一个随机结果,那么如何在不使用变量的情况下打印该值呢。其他细节,如果您没有函数的调试信息,那么它来自剥离库 (gdb)p myRandom()无法使用,它将导致与应用程序使用的值不同的结果 你可能会问:“为什么你要使用一个随机函数而不使用它的结果”,让我们说,返回只是该函数所做的额外事情 (gdb)p myRandom() 无法使用,它将导致与应用程序使用的值不同的结果
(gdb) p foo()
但是如果这个函数总是返回一个随机结果,那么如何在不使用变量的情况下打印该值呢。其他细节,如果您没有函数的调试信息,那么它来自剥离库
(gdb)p myRandom()
无法使用,它将导致与应用程序使用的值不同的结果
你可能会问:“为什么你要使用一个随机函数而不使用它的结果”,让我们说,返回只是该函数所做的额外事情
(gdb)p myRandom()无法使用,它将导致与应用程序使用的值不同的结果 您可能希望在应用程序调用的特定位置检查返回给应用程序的值
myRandom()
您需要在紧跟调用之后的指令上设置断点,然后检查返回值的寄存器。例如,在i*86
上,值在eax
寄存器中返回,因此您将执行打印$eax
或者,在myRandom()
上设置一个断点,然后执行finish
命令(不需要调试信息),然后检查返回寄存器。类似问题。