【发布时间】:2012-06-02 09:12:32
【问题描述】:
我需要在实际设备上调试 ios 应用程序的启动...并且启动是指当操作系统将控制权交给应用程序时执行的第一条指令 .不是“主要”。此外,此应用程序没有任何符号(即调试信息不可用.. 尚未)。我不在乎是否必须在 CPU 指令级别进行调试。我知道该怎么做(做了 30 多年)。当控制权即将转移到应用程序时,我希望调试器 stop。当我使用 Attach|by Name 命令并运行时,它只会显示“已完成运行”。
哦,这个应用程序不是在 XCode 中构建的。 是,但是我构建、签名和配置并移动到设备的应用程序。该应用程序确实运行,因为我可以看到控制台输出。以防你认为我是试图调试某人应用程序的黑客。
这对于一个高要求来说怎么样?我敢打赌没有人能回答这个问题......我无法找到任何关于如何使用 XCode 构建的项目来做到这一点的信息。我想知道这是否根本不可能或被苹果霸主“允许”?
你说什么,堆栈溢出之神?
更新:我应该澄清一些事情。此应用程序不是使用任何商用或开源工具构建的。我与创建编译器、框架和 IDE 的工具供应商合作。 IOW,你不能得到这个工具......但是。在引导新工具链的过程中,必须定期进行一些非常低级的原始调试。特别是如果工具生成的代码中存在错误。
【问题讨论】:
-
如果是这样的话,这只是苹果作为开发者工具敌对的另一个例子。即使是 MS 在其最反竞争的年代也从未如此敌对。
-
我对内核只字未提。这是纯粹的用户空间调试。我只是在询问如何让调试器在控制转移到应用程序后停止,并添加皱纹,即没有符号和/或行号信息。
-
您确实需要更好地解释您正在尝试做什么,以及您希望通过尽早开始调试来找到什么。你看到崩溃了吗?您的程序是否有一些您不理解的初始启动状态?整个问题看起来就像你把问题弄得比它需要的复杂得多。
-
嗯,我确实解释过我与一家编程工具供应商合作,这意味着大多数人认为理所当然的东西我没有。大多数人的编译器、调试器、IDE 已经完成并准备就绪。我正在创建这些东西的过程中,并且需要能够引导该过程,以便客户可以理所当然地认为他们是工具,并且它的供应商已经经历了痛苦让事情顺利进行。
-
Allen - 微软的黑暗时刻非常黑暗,但至少我们可以依靠 Periscope CPU 分线开关。 (冻结!好吧,没人动。我们在哪里?)还记得在 16 位 Windows 可执行文件的启动代码中摆弄的无证堆栈吗?在微软承认运行应用程序需要魔术舞之前,我们已经进行了很长时间的逆向工程,甚至在他们解释为什么需要之前更长时间。 p.s.祝你最新的谜题好运! :>