You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GDB查看rand()函数的返回值?

在GDB中获取rand()返回值的方法

针对你调试的随机数猜谜游戏,要拿到rand()的返回值(该值会存在EAX寄存器中),可以按以下步骤用GDB操作:

  • 先定位到你标注红色下划线的那条指令(也就是rand()调用后负责把EAX值存入内存的mov指令),用它的内存地址设置断点:

    break *0x<指令地址>
    

    把<指令地址>替换成反汇编结果里这条指令对应的实际地址即可。

  • 运行程序,让它停在刚才设置的断点处:

    run
    
  • 程序断下后,用以下任意一条指令查看EAX寄存器的值:

    info registers eax  # 显示EAX的完整寄存器信息
    print $eax          # 以十进制格式打印EAX的值
    p/x $eax            # 以十六进制格式打印EAX的值(按需使用)
    

还有一种替代方法:在反汇编结果里的call rand指令处设断点,运行到此处后执行stepi单步完成rand()调用,此时EAX中就已经存好返回值,再用上面的指令查看即可。

拿到rand()返回值后,根据代码winning_number= (rand() % 20) + 1简单计算,就能直接得到中奖数字。

内容的提问来源于stack exchange,提问作者Korneliusz93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:38:07