有许多类似的问题,所以这个问题的重点不是重复.
前提条件
目标
所以问题是"可以做到吗?"
以下是关于"已经尝试过"的一些注释 - 已经考虑过的不同方法.
很好理解攻击向量
可能不起作用的事情
可能的想法
Apple小心翼翼地避免暴露此功能.有没有人想出办法呢?
我刚刚使用Android Studio制作了一个未经修改的空Android应用.我正在尝试设置一个异常断点.
默认异常断点重复触发.所以我添加!(this instance of java.lang.ClassNotFoundException)了条件,正如这个问题所建议的那样.
但是,我仍然被我的异常打断,这次是一个模态对话框:

如何创建一个异常断点,在异常发生之前保持静默?
编辑澄清:我不想为特定的异常创建一个断点,我想要一个我可以随时留下的一般异常断点.
我有一个用objective-c编写的静态库.我有一个libFoo.a文件的形式.
我想提取库中包含的类和方法,类似于class-dump-z的输出.
我已otool -tV按照此处的建议尝试使用.
但是,输出非常冗长,除了接口声明之外还包含许多其他内容.
根据H2CO3的评论,我尝试了RuntimeBrowser,这似乎是一个很好的工具.但是,从文件 - >打开打开.a文件似乎没有做任何事情.可能是因为我正在使用Mac版本并试图检查iOS库.
我也尝试对静态库运行class-dump-z,但它似乎不起作用:
/**
* This header is generated by class-dump-z 0.2a.
* class-dump-z is Copyright (C) 2009 by KennyTM~, licensed under GPLv3.
*
* Source: (null)
*/
Run Code Online (Sandbox Code Playgroud)
尝试了常规类转储,但收到此错误消息:
错误:Fat文件不包含指定体系结构的有效Mach-O文件(i386).这可能意味着类转储是在静态库上运行的,不支持.
我下载了IDA for Mac的评估版(6.4.1303322),到目前为止它还是最好的.非常有用 - 只需弹出静态库,您就可以看到类的列表,它可以理解Objective-C 2.0语法,您可以看到这些方法.
话虽这么说,我仍然希望看到一种方法来获得与class-dump-z相同格式的输出.
有人知道提取Objective-c静态库中包含的类和方法的方法吗?当我在调试器中停止时,我可以在堆栈中看到它们,当我使用它时[NSThread callStackSymbols],我知道调试符号存在.
在模拟器中运行iOS应用程序时,会有一个环境变量NSObjCMessageLoggingEnabled导致所有objc_msgSend调用都记录到文件中.(详细说明).
我试图找出我的应用程序中发送的所有消息,但我无法在模拟器中运行它.它必须在物理设备上,因为我通过闪电连接器与硬件进行交互.出于同样的原因,我无法将调试器附加到进程.
将日志写入磁盘(如使用创建的日志)NSObjCMessageLoggingEnabled,但在我的应用程序的Documents目录中将其写入本地或类似日志会很有帮助.
这可能吗?
我正在开发一个cocoapod。使用我的 pod 的人可以选择是否将此行包含在他们的Podfile:
use_frameworks!
如果他们包含它,我的代码将被编译到一个.framework文件中。如果没有,就会被编译成.a文件。
我想使用预处理器宏根据是否use_frameworks!存在在我的可可豆荚中包含不同的代码。
例如,这样的事情:
#if PODFILE_CONTAINS_USE_FRAMEWORKS
@import My_Library;
#else
#import <My-Library/MyLibrary.h>
#end
Run Code Online (Sandbox Code Playgroud)
当您的 Pod 名称不合规时,就会出现这种情况c99extidentifier。
我已经尝试检查#if defined COCOAPODS,但这两种情况都定义了。
给出以下代码段:
- (void)doSomething
{
NSUInteger count;
}
Run Code Online (Sandbox Code Playgroud)
什么算?它保证是0吗?