• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 为什么我不能在我的库中设置断点?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:14:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

目标是在库深处调试方法。

我们可以在同一个库中调试 c 函数(只要它们不在 .m 文件中),但显然没有 Objective-C 代码,甚至没有任何 .m 文件中的 c 代码。

当我尝试手动设置断点(break set -n)时,我得到: 警告:无法将断点解析到任何实际位置。

代码确实被调用了,可靠的记录器确认了这一点。

我的预感是调试信息在此过程中会丢失:我们正在构建一个静态库,然后是另一个静态库(“框架”样式),最后我们将其链接到我们的应用程序中。是的,这很复杂,但历史原因,你知道的。

我试图检查第一个 .a 文件以了解发生了什么,但是当我尝试将其加载到 lldb 时,我必须创建一个目标。任一架构的目标创建都失败:

target create -d --arch i386 libFoo.a 错误:“libFoo.a”不包含 i386 架构

target create -d --arch armv7 libFoo.a
错误:“libFoo.a”不包含任何“远程 ios”平台架构:arm64、armv7、armv7f、armv7k、armv7s、armv7m、armv7em、armv6m、armv6、armv5、armv4、arm、thumbv7、thumbv7k、thumbv7s、 thumbv7f, thumbv7m, thumbv7em, thumbv6m, thumbv6, thumbv5, thumbv4t, thumb

lipo -info libFoo.a fat文件中的架构:libFoo.a是:armv7 i386

有没有人知道如何最好地解决这个问题?代码肯定是链接的,可以工作,但是lldb不能设置断点。

非常感谢

附录:

我创建了我能想到的最简单的设置,但我看到了非常非常奇怪的结果:

如果我尝试查找某些内容,有些会返回文件和行号,有些则不会:

图像查找 -s Foo::faz() 1 个符号与 [...]/Build/Products/Debug-iphoneos/Test.app/Test 中的 'Foo::faz()' 匹配: 地址:Test[0x00010334] (Test.__TEXT.__text + 22060) 摘要:Test'Foo::faz() at Foo.cpp:858 图像查找-s FazBar 1 个符号与 [...]/Build/Products/Debug-iphoneos/Test.app/Test 中的“FazBar”匹配: 地址:Test[0x00038eb4] (Test.__TEXT.__text + 188844) 摘要:Test'FazBar

尝试在相应文件中设置断点会产生预期的结果:

(lldb) 中断集 -f Foo.cpp -l 877 断点 5: where = Test'Foo::faz() + 76 at Foo.cpp:877, address = 0x000cb380 (lldb) 中断设置 -f bar.c -l 585 断点 6:没有位置(待定)。 警告:无法将断点解析到任何实际位置。

如何深入了解 .a 文件以查看为什么找不到某些文件?



Best Answer-推荐答案


嗯,有人(实际上不是我,有绝对聪明的设置 GCC_GENERATE_DEBUGGING_SYMBOLS = NO 隐藏在深处的某个地方。

设置为yes,好吧,你猜对了,解决了问题

亚历克斯

关于ios - 为什么我不能在我的库中设置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911097/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap