2013-08-29 104 views
0

我想了解可执行文件的rlimit和管道限制是什么? 我正在调试动态构建的可执行文件在加载时崩溃的问题,但静态构建的可执行文件没有问题。 当一个动态生成的可执行文件被加载,执行(Linux)。它如何在内部运作? Linux可执行文件属性(rlimit)

我看到下面的打印寄存器转储

Process 2748(ls) has RLIMIT_CORE set to 1 
Aborting Core 

首先有人请解释什么是RLIMIT与角度EXEC后。还有一些东西叫做管道限制吗?我看到这个proc条目。

请指点我解释可执行文件的这些属性的资源。

问题2: 当一个可执行文件被加载时,exec究竟做了什么?链接器将加载我的可执行文件所需的共享库。所以要发生这种情况,应该先执行链接器(二进制内/ system/bin)。

因此,我明白链接器(system/bin/linker)和可执行文件(ls)都是由exec加载的。我的理解是否正确?这都是理论。如果某个人,可能是擅长fs和proc管理的人,可以将我指向相关的来源,那将是很大的帮助。谢谢。

回答

1

RLIMIT_CORE用于限制coredump在被中止前允许产生的信息量。一旦达到此限制,则不会记录更多信息,并且将消息Aborting Core记录到控制台。

core手册页:

进程可以设置它的软RLIMIT_CORE资源限制放置一个上限,如果它收到将要产生的核心转储文件大小一个“核心转储”信号。

使用setrlimit()RLIMIT_CORE配置为更大的值以获得完整的内核。


可执行/共享对象的最常见的格式是ELF。在Linux中,这些共享对象的动态加载和联通过ld.so

ld.so在新创建的进程的地址空间中(在这种情况下,通过exec)被加载并首先执行进行。这是可能的,因为它的路径在编译期间嵌入到可执行二进制文件的.interp部分。

动态链接器然后

  • 加载初始可执行映像
  • 负载从属共享对象(*.so文件)
  • 跳转到可执行文件的入口点

参考:Dynamic linker on ELF-based Unix-like systems

+1

谢谢你的完美答案 –

相关问题