1.一种程序日志写入文件的方法,其特征在于,包括:
S1:获取程序中所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
S2:根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针,遍历每个函数的名称,找到每个Mach-o文件内的NSlog函数;
S3:编写一hook函数,所述hook函数用于获取NSlog函数的调用堆栈信息;
S4:创建一空白文件,当程序内的NSlog函数被调用时,通过编写的hook函数获取NSlog函数的调用堆栈信息,并根据获取的调用堆栈信息得到NSlog函数打印的日志,同时将得到的日志写入创建的空白文件中保存。
2.如权利要求1所述的一种程序日志写入文件的方法,其特征在于:所述hook函数用于将目标函数的内存地址进行替换成设定地址;
当目标函数执行时,跳转至设定地址以进行调用堆栈信息的获取;
所述目标函数为NSlog函数。
3.如权利要求2所述的一种程序日志写入文件的方法,其特征在于:S4中,对于NSlog函数的调用堆栈信息的获取,具体为:S401:根据Mach-o文件的虚拟内存地址和指针,获取Mach-o文件中NSlog函数的内存地址;
S402:将NSlog函数的内存地址替换成设定地址,同时保存NSlog函数的内存地址;
S403:NSlog函数跳转至设定地址,进行NSlog函数的调用堆栈信息的获取。
4.如权利要求1所述的一种程序日志写入文件的方法,其特征在于:通过iOS系统的API函数fopen将日志写入空白文件中。
5.如权利要求4所述的一种程序日志写入文件的方法,其特征在于:对于保存至空白文件中的日志,通过NSlog函数将日志在程序调试用控制台进行显示。
6.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至5任一项所述的方法。
7.一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1至5任一项所述的方法。
8.一种程序日志写入文件的系统,其特征在于,包括:
获取模块,其用于获取程序中的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
解析模块,其用于根据Mach-o文件在内存中的虚拟内存地址,同时解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针,遍历每个函数的名称,找到每个Mach-o文件内的NSlog函数,同时编写一hook函数,所述hook函数用于获取NSlog函数的调用堆栈信息;
执行模块,其用于创建一空白文件,当程序内的NSlog函数被调用时,通过编写的hook函数获取NSlog函数的调用堆栈信息,并根据获取的调用堆栈信息得到NSlog函数打印的日志,同时将得到的日志写入创建的空白文件中保存。
9.如权利要求8所述的一种程序日志写入文件的系统,其特征在于:所述hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行调用堆栈信息的获取;所述目标函数为NSlog函数。
10.如权利要求8所述的一种程序日志写入文件的系统,其特征在于:通过iOS系统的API函数fopen将日志写入空白文件中。