我正在尝试观看链接器加载库并在Android上的zygote中搜索符号。
Zygote由init(或CLI上的启动/停止zygote命令)启动。在init。*。rc文件中,我将其修改为具有LD_DEBUG = 2的环境变量(通过init.zygote [32 | 64] .rc文件中的setenv LD_DEBUG 2)。在链接器代码中,这应该将调试信息打印到logcat,如果从命令行调用程序,它会执行该操作,即:“LD_DEBUG = 2 ./myprogram”。
但是,这对zygote不起作用。我看了/ proc / [zygote的pid] / environ,LD_DEBUG = 2肯定在那里。
服务的链接器代码(以及其他内容)设置环境数组,调用fork(),执行更多工作,然后使用它创建的数组调用exec()。
所以,我想知道,有没有办法在这个fork-exec中保留链接器?我认为这是不可能的,因为我认为一个exec完全抹去了一个进程的内存空间。
我可以看到如果它被保留,它将不再被调用,因为链接器已经被加载,但是如果它正在擦除进程内存空间,这没有意义。