c - 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>
为什么会这样?谢谢。
解决方案
推荐阅读
- .net - 出于某种原因,EntityFramework Core 根本不存在于任何地方
- regex - 如何使用 Sublime Text 找到相同的电子邮件地址?
- go - 如何存储 mqtt-paho golang 收到的消息?
- javascript - 想要在模式中显示打开的 Accordion 的特定数据以使用 Django 进行更新操作
- webpack - 为什么我的 electron-forge 使用 webpack 模板制作带有空 node_module 文件夹的可分发文件?
- swift - 筛选器值的筛选和选择 SwiftUI
- javascript - 如何从一个 html 表单中获取数据并将其显示在另一个表单上?
- ios - 为什么我得到一个 ld:framework not found
pod repo推送期间构建错误? - algorithm - 两组数组元素之和的最大乘积
- apache-spark - 镶木地板中具有特殊字符的蜂巢柱