争怎路由网/系统工具/内容

docker使用GDB,无法进入断点的处理方法

系统工具2024-06-11 阅读
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
背景
能源产品线的单元测试需要root权限,在统一开发服务器中,只能使用docker进行部分高权限单元测试的运行和调试开发。
 
问题
docker里运行gdb,打了断点,却无法进入断点。
 
原因
docker为了保证主机安全,docker开了很多安全设置,其中包括ASLR(Address space layout randomization),即docker里的内存地址和主机内存地址是不一样的。
ASLR会导致GDB这种依赖地址的程序无法正常运作。
 
解决方法
使用docker的超级权限,加入–privileged
如:
docker run –privileged ……
GDB即可正常运作。
超级权限会关闭很多安全设置,可以更充分的使用docker能力。
例如,docker里再开docker都可以了。

Linux是一套免费使用和自由传播的类Unix操作系统



……

相关阅读