Open
Description
因为看到有这个不错的工具,因此在研究集成到工程中去,特意花了几天把源代码研读一番,下面是个人给出的几个建议希望能尽快升级这个库:
1.bool CStackHelper::isInAppAddress(vm_address_t addr)这个函数的实现不完全正确,第0个image的内容不一定就是可执行程序本身,有可能是dyld库或者其他一些比如用于XCODE调试和分析的一些支持库。
2.对于程序中获取所有image信息的数据结构AppImages看到只在一处进行初始化构建,但是实际中某些image是可能在运行时动态加载和卸载的,因此需要有一个机制能够在运行时动态更新所有的image信息。还是bool CStackHelper::getImageByAddr(vm_address_t addr,segImageInfo *image)这个函数有可能会返回false然后我看代码里面有不少这个函数的使用,当返回false时不进行处理,这样就如我上面说的某一些在运行时加载的image就无法查找到对应的信息从而漏了记录。
3.建议对获取的image信息进行开始地址和结束地址排序排列,这样在进行一些地址归属某个image时比如:bool CStackHelper::getImageByAddr(vm_address_t addr,segImageInfo *image)函数就可以用二分查找法来增强性能。
4.在编程风格上看到有OC代码有C++代码,但是代码中貌似没有语言层面分层的概念,有时候在众多C++代码中又突然调用OC代码,然后OC代码中又突然调用C++代码。这样的设计方法我觉得有待优化。
5.最后,优秀的开源库还是值得去接入和使用的。
Metadata
Metadata
Assignees
Labels
No labels