从gdb修改全局变量

时间:2015-11-25 20:13:25

标签: c++ linux debugging gdb global-variables

使用GDB,我试图修改全局变量。全局变量在共享库中定义 - 不确定是否有任何区别。但是我收到错误"无法访问会员"。这就是我在做的事情:

$ gdb /usr/lib/libmylib.so
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
...

(gdb) p GlobalVar1
$1 = 0

(gdb) info variable GlobalVar1
All variables matching regular expression "GlobalVar1":

File src/file.cc:
static volatile int GlobalVar1;

Non-debugging symbols:
0x00000000007d2f08  GlobalVar1
(gdb) 

(gdb) info address GlobalVar1
Symbol "GlobalVar1" is static storage at address 0x7d2f08.

(gdb) set var GlobalVar1=1
Cannot access memory at address 0x7d2f08

为什么会失败的任何想法?

1 个答案:

答案 0 :(得分:0)

您正在调试没有进程。  只需创建一些伪造的hello-world并将其链接到前面提到的库:

#g++  -ggdb hello.cc   -lmylib
#gdb ./a.out
#gdb> b main
#gdb> r
#gdb>p globalVar1
#gdb> set globalVar1
...