【问题标题】:How to catch a random value returned by a function in gdb如何在 gdb 中捕获函数返回的随机值
【发布时间】:2012-11-23 05:35:08
【问题描述】:

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

(gdb) p foo()

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

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

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

【问题讨论】:

标签: debugging gdb


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多