为什么 _ _ libc_start_main 的地址在 GDB 内总是相同的,即使 ASLR 打开?

共1个回答,已解决, 标签: c linux gdb libc aslr
断点 1,0x00007ffff7de8060 在 _ _ libc _ start _ main () 来自/usr/lib/libc.so.6
(Gdb) r
正在调试的程序已经启动。
从头开始?(y 或 n) y
启动程序:/home/firstlove/projects/org-ioslide/example/a.out

断点 1,0x00007ffff7de8060 在 _ _ libc _ start _ main () 来自/usr/lib/libc.so.6
(Gdb) r
正在调试的程序已经启动。
从头开始?(y 或 n) y
启动程序:/home/firstlove/projects/org-ioslide/example/a.out

断点 1,0x00007ffff7de8060 在 _ _ libc _ start _ main () 来自/usr/lib/libc.so.6
(Gdb) 退出
(Gdb) 退出
调试会话处于活动状态。

劣质 1 [过程 16372] 将被杀死。

退出?(y 或 n) y
Firstlove-pc % cat/proc/sys/kernel/randomize_va_space
2

IIUC,ASLR 应该随机分配所有地址,包括libc.so, but I found that the address of __libc_start_main() is always 0x00007ffff7de8060在我的 Linux 机器上,为什么?什么是错的?

第1个答案(采用)
    When you run a program inside gdb, gdb tries to help you debugging by disabling address randomization. You can use the following command to enable it (effective from the next run of the program):
设置禁用随机化

相关问题

我投的是 malloc 的结果吗? 为什么是统计:: st _ size 0 为设备, 但同时 lseek 正确地定义了设备大小? 允许在易失对象上进行优化 UTF-8 一路通过 错误: TCP 提供程序: 错误代码 0x2746。在 linux 下通过终端进行 Sql 设置时 为什么 _ _ libc_start_main 的地址在 GDB 内总是相同的,即使 ASLR 打开? 为什么 gdb 不能看到所有范围内的全局符号 缺少 inotify 事件 (在。Git 目录