问题概述
最近想基于docker搭建一个全平台的code环境.在使用clang+lldb调试的时候遇到了这个问题.
Could not disable address space layout randomization (ASLR).
(Possibly due to running in a restricted container. Add “initCommands”:[“settings set target.disable-aslr false”] to the launch configuration to suppress this warning.)
这玩意确实是可能影响调试的.
解决方案
有root权限,或者容器有privilege (暂时改变)
cat /proc/sys/kernel/randomize_va_space #查看ASLR情况
值对应的情况
0 – 没有随机
1 – 部分随机. Shared libraries, stack, mmap(), VDSO and heap are randomized.
2 – 全随机
这个时候我们执行:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
或者
sudo echo 0 > /proc/sys/kernel/randomize_va_space
直接改变数值就是改变随机化情况.
但是这只会持续到下一次reboot之前
有root权限,或者容器有privilege (永久改变)
在/etc/sysctl.d/
文件夹底下,自己创建一个*.conf文件,里面的东西会在sysctl(8)在boot的时候执行,比如我们可以
vim /etc/sysctl.d/01-disable-aslr.conf
然后输入kernel.randomize_va_space = 0
保存即可
无root权限,或者容器无privilege
挂载容器的/proc/sys或者/etc/sysctl.d到本地的文件夹底下,
挂载完之后想怎么修改参照上面的两条,用container上一层的权限修改被挂载位置里面的文件即可.