Подтвердить что ты не робот

Предупреждение: ошибка отключения рандомизации адресного пространства: операция не разрешена

что я сделал неправильно (или не сделал), что gdb работает неправильно для меня?

[email protected]:/# cat minimal.c 
int main()
{
  int i = 1337;
  return 0;
}
[email protected]:/# gcc -g minimal.c -o minimal
[email protected]:/# gdb minimal
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
.
.
.
Reading symbols from minimal...done.
(gdb) break main
Breakpoint 1 at 0x4004f1: file minimal.c, line 3.
(gdb) run
Starting program: /minimal 
warning: Error disabling address space randomization: Operation not permitted
During startup program exited normally.
(gdb) 
(gdb) print i   
No symbol "i" in current context.
4b9b3361

Ответ 1

По какой-то причине ваша учетная запись пользователя не имеет разрешения отключить рандомизацию размещения адресного пространства ядра для этого процесса. По умолчанию gdb отключает эту функцию, поскольку упрощает некоторые отладки (в частности, это означает, что адрес объектов стека будет одинаковым при каждом запуске вашей программы). Подробнее здесь.

Вы можете обойти эту проблему, отключив эту функцию gdb с помощью set disable-randomization off.

Что касается получения вашего пользователя разрешения, необходимого для отключения ASLR, возможно, это связано с разрешением на запись на /proc/sys/kernel/randomize_va_space. Подробнее здесь.

Ответ 2

Если вы используете Docker, вам, вероятно, нужна опция --security-opt seccomp=unconfined (а также включение ptrace):

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined