Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 C 中,如果您有一个返回“始终”相同结果的函数,您可以执行以下操作:
(gdb) p foo()
但是如果这个函数总是返回一个随机结果,如何在不使用变量的情况下打印那个值。其他细节,如果你没有函数的调试信息,它来自一个剥离的库。
(gdb) p myRandom()不能使用,它会导致与应用程序使用的值不同的东西。
(gdb) p myRandom()
您可能会问:“为什么要使用随机函数而不使用其结果”,可以说返回只是该函数所做的额外事情。
(gdb) p myRandom() 不能使用,它会导致与应用程序使用的值不同的东西。
大概您想在应用程序调用的特定位置检查返回给应用程序的值myRandom()。
myRandom()
您需要在紧跟在 之后的指令上设置断点CALL,然后检查返回值的寄存器。例如, on i*86,值在eax寄存器中返回,所以你会做print $eax.
CALL
i*86
eax
print $eax
或者,在 上设置断点myRandom(),然后执行finish命令(您不需要调试信息来执行此操作),然后检查返回寄存器。
finish