Dan*_*maa 5 xcode cocoa objective-c ios
TraceGL是一个非常简洁的项目,允许JS程序员在Javascript中跟踪代码路径.它看起来像这样:

我想为Objective C构建类似的东西.我知道运行时使跟踪方法调用变得相当容易,但我如何跟踪控制流?例如,在上面的屏幕截图中,未执行的代码路径显而易见,带有红色突出显示.在Objective C/Xcode工作流程中实现类似功能的最佳方法是什么?
到目前为止,我提出的最好的方法是编写一个预处理器,在将代码发送到编译器之前将代码注入临时源文件.谁有更好的主意?
我想Xcode静态分析器发现问题的可视化器非常接近这一点 - 虽然这只会给你一个特定问题的调用路径,如内存泄漏.
在Xcode中尝试"产品>分析",选择在任何给定项目中找到的任何问题,然后单击代码编辑器中的蓝色箭头以查看您自己.

不完全是 Objective C 和 XCode 的答案。
对于 C++ 代码,有一个工业质量代码覆盖率工具BullseyeCoverage
- 功能覆盖范围为您提供快速概览,条件/决策覆盖范围为您提供高精度
- 适用于您可以用 C++ 和 C 编写的所有内容,包括系统级和内核模式
如果您想自己发明/编写这种工具,我建议您查看(评估)一些解决相同任务的现有工具,这样您就不会错过关键功能
此类工具基本上有两类
检测的目的是在代码中插入对分析运行时的调用,该分析运行时收集运行时统计信息以进行进一步处理。
基本通话
源代码地址取决于您感兴趣的粒度。它可以是函数名称,也可以是源文件和行号。
收集的性能数据可能非常庞大,因此通常会对它们进行汇总,并且不会捕获整个调用堆栈。它通常具有足够的详细程度来检测性能瓶颈。
另一个缺点是,捕获详细的性能数据(尤其是在多次命中的代码点中)会显着降低应用程序的速度。
如果您想要完整的历史记录,请捕获包括时间戳和线程 ID 在内的完整跟踪,并且稍后您将能够重新创建调用堆栈,因为知道每个调用堆栈enter都有相应的leave.
为了保证这种配对,代码检测必须插入异常处理调用,以确保即使函数抛出异常,也会记录退出点(什么是“异常”以及如何最终尝试,这取决于语言和操作系统平台) )。
要获得所有必要的技巧和技巧,请评估一些工具并查看它们的仪器风格。
顺便说一句:总的来说,需要做很多工作,并且要做好,我个人曾两次或多次思考过结果和成本。
作为一个想玩的主题,我完全推荐它。我创建了这样一个工具,用于对在 C++ 源代码级别和 Java 二进制级别工作的 Java MIDP 应用程序进行故障排除,并且在我们需要它时它很有帮助。
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |