【问题标题】:gdb use calculation of one command as an argument to anothergdb 使用一个命令的计算作为另一个命令的参数
【发布时间】:2013-11-14 08:32:02
【问题描述】:

我正在尝试显示当前堆栈帧的内存打印,但现在我要做的是费力:

# Find out how big the current frame is:
(gdb) print/x $ebp - $esp
$1 = 0x4
# Use that in a display:
(gdb) x/4x $ebp

我很想使用define 命令来实现它,所以这只会在每一步之后发生,所以我对堆栈帧有一个持续的认识。

做这样的事情:

(gdb) x/$1x $ebp
(gdb) x/($1)x $ebp

没用。

【问题讨论】:

    标签: memory gdb stack


    【解决方案1】:

    GDB中,命令x用于检查内存,参数如下,

    x
    x address
    x/nfu address  
    

    n 是重复计数,f 是显示格式,u 是单位大小;

    (gdb) p/x $rsp
    $4 = 0x7fffffffe248
    (gdb) x/4x 0x7fffffffe248
    0x7fffffffe248: 0xffffe4e5  0x00007fff  0x00000000  0x00000000
    (gdb) x/$4
    0x7fffffffe248: 0xffffe4e5
    (gdb) x/$4x 
    Value can't be converted to integer.
    (gdb) x/$4 $rsp
    A syntax error in expression, near `$rsp'.
    (gdb) x/$_
    0x7fffffffe248: 0xffffe4e5 
    

    观察最后一个命令x/$_,其中在x 之后,检查的最后一个地址可用于使用$_ 变量的表达式。

    编辑:变量$_产生的地址的内存内容由变量$__给出。

    【讨论】:

    • $_!谁会想到它。
    猜你喜欢
    • 1970-01-01
    • 2019-08-26
    • 2012-10-25
    • 1970-01-01
    • 2012-03-27
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多