聘我网

新概念招聘3.0

gdb如何查看某个变量在堆还是栈中?

vote up0vote downstar

rt,假设进程已经开始run

 

1 个答复

vote up0vote downcheck

info proc mappings可以看栈的起始、终止位置。

例子:

(gdb) info proc mappings
process 2578
cmdline = '/root/test/hw'
cwd = '/root/test'
exe = '/root/test/hw'
Mapped address spaces:

          Start Addr           End Addr       Size     Offset objfile
            0x400000           0x401000     0x1000          0                            /root/test/hw
            0x600000           0x601000     0x1000          0                            /root/test/hw
        0x34f3c00000       0x34f3c1c000    0x1c000          0                        /lib64/ld-2.5.so
        0x34f3e1b000       0x34f3e1c000     0x1000    0x1b000                        /lib64/ld-2.5.so
        0x34f3e1c000       0x34f3e1d000     0x1000    0x1c000                        /lib64/ld-2.5.so
        0x34f4000000       0x34f414e000   0x14e000          0                        /lib64/libc-2.5.so
        0x34f414e000       0x34f434d000   0x1ff000   0x14e000                        /lib64/libc-2.5.so
        0x34f434d000       0x34f4351000     0x4000   0x14d000                        /lib64/libc-2.5.so
---Type <return> to continue, or q <return> to quit---
        0x34f4351000       0x34f4352000     0x1000   0x151000                        /lib64/libc-2.5.so
        0x34f4352000       0x34f4357000     0x5000 0xf4352000        
      0x2aaaaaaab000     0x2aaaaaaac000     0x1000 0xaaaab000        
      0x2aaaaaabe000     0x2aaaaaac0000     0x2000 0xaaabe000        
      0x7ffffffea000     0x7ffffffff000    0x15000 0xfffea000                       [stack]
  0xffffffffff600000 0xffffffffffe00000   0x800000          0                   [vdso]

或者不通过gdb的话:

cat /proc/24020/maps 

24020换成相应的PID就行

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.