Iphone 在构建之前向类文件添加代码-目标C

Iphone 在构建之前向类文件添加代码-目标C,iphone,objective-c,xcode,precompiling,Iphone,Objective C,Xcode,Precompiling,我正在寻找开发一个框架,我不想进入细节 假设我的iPhone应用程序中有100多个类和1000多个方法。 在这个场景中,我想在每个类的每个方法(开始或结束或两者)中添加NSLog 手动添加NSLog是可能的,但是否有更好的解决方案? 就像构建应用程序那样,我可以添加此日志,而无需手动操作 感谢和问候 丹尼斯 在许多论坛中都是最有用的。 非常感谢 我之所以寻找这样的产品,是因为我们有很多客户项目,很多时候在QA和UAT过程中,我们会遇到一些崩溃或其他问题~其中80%是不可复制的或需要某些特定场景

我正在寻找开发一个框架,我不想进入细节

假设我的iPhone应用程序中有100多个类和1000多个方法。 在这个场景中,我想在每个类的每个方法(开始或结束或两者)中添加NSLog

手动添加NSLog是可能的,但是否有更好的解决方案? 就像构建应用程序那样,我可以添加此日志,而无需手动操作

感谢和问候


丹尼斯

在许多论坛中都是最有用的。 非常感谢

我之所以寻找这样的产品,是因为我们有很多客户项目,很多时候在QA和UAT过程中,我们会遇到一些崩溃或其他问题~其中80%是不可复制的或需要某些特定场景。我们使用.crash和dsym来跟踪这些问题。但在这种情况下,它并没有那么有用

我正在寻找的是提供addhoc构建,它将记录用户遵循的步骤,以便能够轻松地重现此类问题

目前,我正在使用预编译头和您提到的第一个方法(搜索第一个大括号,然后用宏替换它)

正如您所提到的,我将研究DTrace和objc_msgSend。我会谷歌出这些同时,如果你有任何喜欢的教程,这将是伟大的

感谢和问候,
:D

那么您想在代码中添加跟踪功能吗

苹果没有提供这样的服务。您必须自己添加跟踪工具。如果您的源代码风格是一致的,那么自动执行此操作可能相对容易,例如搜索以减号(或加号)开头的行后面的第一个大括号

或者,您可能希望使用public Objective-C运行时函数枚举所有类及其所有方法,然后方法在跳转到原始类之前,用另一个
NSLog
将它们中的每个类和方法进行切换

或者,您可以采用
objc\u msgSend
的开源实现,并在开头插入对
NSLog
的调用。请注意,
obj_msgSend
tail调用方法,这将阻止您在返回时添加调用。当然要准备好大量的产出。您可能希望将对NSLog的调用条件设置为选择器参数的值为
objc\u msgSend
(例如公共前缀)

最后,最好的跟踪方法可能是将DTrace探测附加到
objc\u msgSend
的条目上。出于上述相同的尾部调用原因,您将无法将DTrace探测附加到其返回


但是更好的问题是为什么要这样做。

我建议您只使用Xcode中的内置调试器。您好,谢谢您的回复。我想看看控制台上的nslog输出。调试器如何帮助我添加许多日志。我不明白你的意思。