首页 > 解决方案 > glibc 中全局变量的地址在添加符号文件后更改

问题描述

我正在尝试调试一个使用条纹 glibc 运行的应用程序。所以我使用带有调试信息的 glibc 加载了符号表,使用 add-symbol-file。但我发现,misc/syslog.c 中全局变量“LogFile”的地址发生了变化。gdb 信息如下:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
0x747ab660 in nanosleep () from /lib/libc.so.6
(gdb) p LogFile
$1 = 5
(gdb) p &LogFile
$2 = (<data variable, no debug info> *) 0x7484e27c <LogFile>
(gdb) add-symbol-file /nfs/glibc/libc-2.24.so 0x747221c0
add symbol table from file "/nfs/glibc/libc-2.24.so" at
    .text_addr = 0x0x747221c0
(y or n)y
Reading symbols from /nfs/glibc/libc-2.24.so...done.
(gdb) p LogFile
$3 = 0
(gdb) p &LogFile
$4 = (int *) 0x14227c <LogFile>

为什么会这样?谢谢。

标签: cgdbglobal-variablesglibc

解决方案


推荐阅读