二、如何进行crash日志符号化 crash日志符号化通常是通过 atos 和 symbolicatecrash 这两个工具来完成。...2.1 atos atos 是苹果提供的符号化工具,在Mac OS系统下默认安装,他的缺点是只能一个地址一个地址逐个翻译。我们看下这个工具的使用说明: ?...,他是对 atos 的封装,可以翻译整个crash文件,有赞就是选择这个工具来进行 crash 符号化的。...3.1.6 执行atos进行符号化 遍历所有线程 取到每一条的bundle 还有地址 在images中找到符号表路径 执行命令 并记录符号化后的内容 '0x00000001044dcfc0 0x104058000...总结 至此,我们了解了如何收集crash日志,明白了crash日志中每个部分的意思,符号化的工具,以及如何对crash日志进行符号化。
虽然没有 dSYM 文件时也有其他办法(可见详解没有 dSYM 文件 如何解析 iOS 崩溃日志[8])可以帮助我们将 Crash 抓出来,但是还是不如有 dSYM 文件时来的简单快捷。...使用 atos 使用这种方式,我们不需在手动计算崩溃地址对应 dSYM 符号表中的地址, ## 0x0000000100298000为 load address ## 0x000000010029e694...atos_result 使用 DSYMTools 我们还可以使用开源的DSYMTools[9],其内部也是使用了atos,图形化页面更方便操作。...symbolicatecrash_xcode atos atos 命令将十六进制地址转换为源代码中可识别的函数名称和行号。优点:速度快,可以符号化特定的某一行,方便上层做缓存。...# load adress:可执行指令部分相对镜像文件中的起始加载地址 # address to symbolicate:调用函数的地址 atos -arch
但如果App发布上线,开发者不可能进行调试,只能通过分析系统记录的崩溃日志来定位问题,在这份崩溃日志文件中,会指出App出错的函数内存地址,而这些函数地址是可以在.dSYM文件中找到具体的文件名、函数名和行号信息的...如果开发者能够获取到崩溃的函数地址信息,就可以利用符号表分析出具体的出错位置。 Xcode提供了几个工具来帮助开发者执行函数地址符号化的操作。.../SuperSDKTest.app/SuperSDKTest 下面,利用两个工具来进行一下符号化的尝试: symbolicatecrash symbolicatecrash是一个将堆栈地址符号化的脚本,...atos 更普遍的情况是,开发者能获取到错误堆栈信息,而使用atos工具就是把地址对应的具体符号信息找到。...实际上,崩溃地址堆栈中+号前后的地址相加即是运行时地址,即0x000ef000 + 74808 = 0x0010143b 执行命令查询地址的符号,可以看到如下结果: $ xcrun atos -o SuperSDKTest.app.dSYM
Symbolicatecrash脚本的核心也是通过atos功能逐行符号化,但人家封装好了,比自己手动一行一行做快很多。...: -[ViewController helloWorld2] (in XSQSymbolicateDemo) (ViewController.m:100) 如何符号化系统动态库中的符号 以这一行为例:...: -[UIApplication sendAction:to:from:forEvent:] (in UIKit) + 96 如何获取基地址 注意:基地址在进程每次启动时决定,所以重启进程后,符号化时必须使用当次启动的基地址...,每条指令对应的内存中的地址都是一样的。...同一个指令,经过多次启动,每次都会被布局到一个新计算出来的地址。 所以仅仅凭借“一个指令在内存中的地址”和dSYM文件,是无法进行符号化的,因为这个“地址”同时依赖于ASLR生成的offset。
atos命令可以被用来单独符号化那些未符号化或者部分符号化过的crash report(中的堆栈信息里的地址)。...想要使用atos符号化crash report可以按如下方式操作: 找到你想要符号化的那一行,记下第二列的binary信息名,以及第三列的地址。...你在使用atos时必须提供这个文件的路径,而不是dSYM的bundle路径。 有了上述信息之后,你就可以把堆栈里的地址通过atos命令来符号化了。你可以符号化多条地址,通过空格来进行区分。...下列步骤显示了如何使用Spotlight来判断那些可以符号化对应堆栈地址信息的dSYM文件是否在你的Mac上。...作为权宜之策,你可以手动用atos来对地址进行符号化。
用atos符号化Crash report atos命令可以把地址里的数字替换成等价的符号。如果调试符号信息是完备的,则atos的输出信息将会包含文件名和对应的资源行数。...atos命令可以被用来单独符号化那些未符号化或者部分符号化过的crash report(中的堆栈信息里的地址)。 想要使用atos符号化crash report可以按如下方式操作: 1. ...你在使用atos时必须提供这个文件的路径,而不是dSYM的bundle路径。 2. 有了上述信息之后,你就可以把堆栈里的地址通过atos命令来符号化了。你可以符号化多条地址,通过空格来进行区分。...下列步骤显示了如何使用Spotlight来判断那些可以符号化对应堆栈地址信息的dSYM文件是否在你的Mac上。 ? [ 定位一个二进制镜像 ] 1. ...作为权宜之策,你可以手动用atos来对地址进行符号化。
使用 atos 解析 crash 文件 命令格式: atos -arch -o /Contents/Resources/DWARF...Address3 操作: atos -arch arm64 -o 《拖入xxx.app.dSYM里的xxx文件》 -l 《基地址》《偏移后的地址》 Tips: xxx 为项目名 如1: atos -...(对应app名+时间点) -> 右键 Export Log 4.3 获取 .dSYM 和 .app 文件 .dSYM是十六进制函数地址映射信息的中转文件,调试的symbols会包含在这个文件中,symbols...总结 CrashSymbolicator.py解析结果显示在 Terminal 里,且 没有保持原来的堆栈格式 atos效率好低,需要按地址解析 symbolicatecrash被废弃了,但文件进过转换还能用...,如果对文章中的内容有疑问,欢迎评论区提出不同的意见进行讨论
这里简单介绍下怎么通过atos命令来解析iOS/Mac 崩溃日志,适合拿到一份未经符号化的crash日志需要开发人员手动符号化的场景 注意:我们每次Archives一个包之后都会随之生成一个dSYM文件...Settings中Debug Information Format是不是DWARF with dSYM File。...二:验证下crash日志、dSYM文件的uuid是否一致 (是一个应用版本的可略过) 控制台输入命令查看dSYM文的uuid: 1、使用 cd 命令进入包含 dSYM 文件的目录 2、输入以下命令并按回车键...,下图红框内就是对应库的uuid 三、确认手机是armv7 or arm64 还是看第二步的Binary Images:处,上图标注的arm64 四、输入atos命令解析crash日志 常用的命令就一个...的Thread,使用对应包名的dSYM 文件(这里以TXLiteAVSDK_TRTC为例)使用atos命令去按行解析 这里在控制台输入以下命令 atos -arch arm64 -o dSYM文件存放路径
二、认识崩溃和异常 在讲解 Bugless 之前,让我们从三个层面来介绍,让大家认识App为什么会出现崩溃和异常,以及如何应对。...在 iOS 系统中,每个 Thread、Task、Host 都有一个异常端口数据。开发者可以通过设置 Thread、Task、Host 的异常端口来捕获 Mach 异常。...对比两款符号化工具Symbolicatecrash(命令行工具)和SymbolicateX(UI工具), 总的来看,两个工具都使用了相同解析关键工具atos。...,以及loadAddress 进行符号化,如以下代码示例: [符号化] Symbolicatecrash:使用到Xcode自带内存地址转函数堆栈命令atos。...在使用过程中也发现了几个问题,其中告警误报的情况时有发生。
符号化你需要一样东西:Debug Symbol文件,也就是我们常说的dsym文件。 机器指令通常会对应你源文件中的一行代码,在编译的时候,编译器会生成这个映射关系的信息。...注意,crash log中的二进制文件会有一个唯一的uuid,dsym文件也有一个唯一的uuid,这两个文件的uuid对应到一起才能够进行符号化。...那么,问题就来了,最后的编译过程是你不可控的,那么如何获得dsym文件呢? 答案是Apple会生成这个dsym文件,你可以从XCode或者iTunesConnect下载。...手动符号化 uuid 在crash log中,可以看到image(可执行文件)对应的uuid, ?...OS版本相关的符号(这个在USB连接的时候,XCode会自动把这些符号拷贝到设备中) atos atos是一个命令行工具,可以用来符号化单个地址,命令格式如下: atos -arch <Binary Architecture
问题描述 因工作需要导出Excel文件,使用技术为EasyPOI,EasyPOI是一个非常好的导出文件工具,官网提供非常详细的使用文档,在项目中使用EasyPOI的模板导出功能,官方提供的示例代码中,模板的路径都是本地...现在想把导出的模板保存在远程的FTP服务中,EasyPOI读取FTP的中模板文件生成Excle文件。...2、创建测试项目 创建一个SpringBoot项目,POM文件中引入需要的Jar包,如下 ? 3、添加一些配置文件 ? 3、 创建一个FTP下载方法,方法返回地址模板全路径名,如下所示 ?...4、需要根据模板导出的地方,使用上面的方法,如下 ? 5、运行代码,生成的文件如下 ?...总结 EasyPOI不提供读取远程模板文件,但是我们可以通过其它方法来实现,下次导出Excle有格式样式改变,我们可以直接调整FTP中的模板文件就可以实现,不用重新部署项目。
问题描述 因工作需要导出Excel文件,使用技术为EasyPOI,EasyPOI是一个非常好的导出文件工具,官网提供非常详细的使用文档,在项目中使用EasyPOI的模板导出功能,官方提供的示例代码中,模板的路径都是本地...,我使用时也是把Excle模板文件放在本地,因为之前需要导出的地方,不是很多,模板文件放在本地也没有太大问题,但是由于现在需求变更,会有大量的模板需要导出,如果放在本地会造成项目容量变大。...现在想把导出的模板保存在远程的FTP服务中,EasyPOI读取FTP的中模板文件生成Excle文件。...FTP中的模板文件就可以实现,不用重新部署项目。...**项目代码已存放在Github上** 链接地址 [weixin.jpg]
Vue.js非常适合使用这些类型的API。 在本教程中,您将创建一个使用Cryptocompare API的Vue应用程序来显示两个主要加密货币的当前价格:比特币和Etherium。...熟悉JSON数据格式,您可以在JavaScript中了解如何使用JSON来了解更多信息。 熟悉向API发出请求。 有关使用API的综合教程,请参阅如何在Python3中使用Web API 。...虽然它是为Python编写的,但它仍将帮助您理解使用API的核心概念。 第1步 - 创建一个基本的VUE应用程序 我们来创建一个基本的Vue应用程序。...我们将构建一个带有一些模拟数据的HTML页面,我们最终将用来自API的实时数据替换它们。 我们将使用Vue.js来显示这个模拟数据。 对于第一步,我们将所有代码保存在一个文件中。...这就是Vue如何让我们在UI中声明性地呈现数据。 我们来定义这些数据。
首先需要在Spring配置文件中增加如下配置: 然后可以用@Component、@Controller...、@Service、@Repository注解来标注需要由Spring IoC容器进行对象托管的类。...这几个注解没有本质区别,只不过@Controller通常用于控制器,@Service通常用于业务逻辑类,@Repository通常用于仓储类(例如我们的DAO实现类),普通的类用@Component来标注
关于IPGeo IPGeo是一款功能强大的IP地址提取工具,该工具基于Python 3开发,可以帮助广大研究人员从捕捉到的网络流量文件(pcap/pcapng)中提取出IP地址,并生成CSV格式的报告...在生成的报告文件中,将提供每一个数据包中每一个IP地址的地理位置信息详情。 ...报告中包含的内容 该工具生成的CSV格式报告中将包含下列与目标IP地址相关的内容: 1、国家; 2、国家码; 3、地区; 4、地区名称; 5、城市; 6、邮编; 7、经度;...8、纬度; 9、时区、 10、互联网服务提供商; 11、组织机构信息; 12、IP地址; 依赖组件 在使用该工具之前,我们首先需要使用pip3包管理器来安装该工具所需的依赖组件...: pip3 install colorama pip3 install requests pip3 install pyshark 如果你使用的不是Kali或ParrotOS或者其他渗透测试发行版系统的话
当然了,你也可以使用Grouper2来做其他的事情,但严格意义上来说,Grouper2并非专业的审计工具。...如果生成的JSON报告格式有问题,用户还可以使用-g选项来优化输出结果。 当然了,如果你需要更加“格式化”的报告,你还可以使用-f “$FILEPATH.html”来生成HTML格式的报告。...如果生成报告中的数据量过大,你还可以设置一个“兴趣等级”,通过使用-i $INT选项即可设置等级,比如说-i 10。 如果你不想对旧策略进行分析,你还可以直接使用-c选项来跳过这些策略。...如果你想提升工具的运行速度,你还可以通过-t $INT选项来设置工具的运行线程数量,该参数默认值为10。 如果你还需要了解该工具的其他运行选项,可以使用-h参数。...在上图中我们可以看到,很明显某个用户对注册表中的ACLS做了一些什么… 当然了,广大研究人员可以根据自己的需要来使用Grouper2,但请不要将其使用于而已用途。
在编程和数据处理过程中,我们经常需要查找文件中是否存在重复的行。Go 语言提供了简单而高效的方法来实现这一任务。...在本篇文章中,我们将学习如何使用 Go 语言来查找文本文件中的重复行,并介绍一些优化技巧以提高查找速度。...四、完整示例在 main 函数中,我们将调用上述两个函数来完成查找重复行的任务。...优化技巧如果你需要处理非常大的文件,可以考虑使用以下优化技巧来提高性能:使用 bufio.Scanner 的 ScanBytes 方法替代 Scan 方法,以避免字符串拷贝。...使用布隆过滤器(Bloom Filter)等数据结构,以减少内存占用和提高查找速度。总结本文介绍了如何使用 Go 语言来查找文本文件中的重复行。我们学习了如何读取文件内容、查找重复行并输出结果。
关于meg meg是一款功能强大的URL信息收集工具,在该工具的帮助下,广大研究人员能够在不影响目标主机和服务器的情况下,尽可能多地收集与目标主机相关的大量URL地址。.../example.com https://example.com http://example.net 接下来,meg将对每一台主机中的每一个地址发送请求: ▶ meg --verbose paths.../paths文件中读取路径,并从名为./hosts的文件中读取目标主机,而且不会提供任何输出: ▶ meg 但结果会存储在名为./out/index的索引文件中: ▶ head -n 2 ....20bc94a296f17ce7a4e2daa2946d0dc12128b3f1 http://example.com/.well-known/security.txt (404 Not Found)(向右滑动,查看更多) 我们可以使用这个索引文件来寻找响应信息的存储位置...,可以直接使用grep来快速查找: ▶ grep -Hnri '< Server:' out/ out/example.com/61ac5fbb9d3dd054006ae82630b045ba730d8618
本文将介绍这三种工具的优缺点,如何选择使用,以及使用过程中可能遇到的IP地址问题和解决方案。一、口子查是什么?(口子查)口子查是指通过在线问卷调查平台进行数据收集和分析的方法。...六、如何解决IP地址问题?...为了解决口子查、站点查、渠道查使用中可能遇到的IP地址问题,可以采取以下步骤:1.使用专业的代理工具和服务(smart代理)如Smartproxy、Rola、Luminati等,实现IP地址的轮换和更换...这些工具和服务提供大量的代理IP地址,用户可以通过轮换不同的IP地址来避免IP地址被封禁或重复使用的问题。...由于代理IP地址的使用可能存在IP地址被封禁或者重复使用的问题,因此需要对采集的数据进行去重和筛选,排除低质量数据和重复IP地址,提高数据有效性和准确性。
领取专属 10元无门槛券
手把手带您无忧上云