菜鸟教程小白 发表于 2022-12-12 21:14:14

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


                                            <p><p>目标是在库深处调试方法。 </p>

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

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

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

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

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

<p><code>target create -d --arch i386 libFoo.a
错误:“libFoo.a”不包含 i386 架构</code></p>

<p><code>target create -d --arch armv7 libFoo.a<br/>
错误:“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</code></p>

<p><code>lipo -info libFoo.a
fat文件中的架构:libFoo.a是:armv7 i386</code></p>

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

<p>非常感谢</p>

<p>附录:</p>

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

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

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

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

<p><code>(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:没有位置(待定)。
警告:无法将断点解析到任何实际位置。</code></p>

<p>如何深入了解 .a 文件以查看为什么找不到某些文件? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>嗯,有人(实际上不是我,有绝对聪明的设置
<code>GCC_GENERATE_DEBUGGING_SYMBOLS = NO</code>
隐藏在深处的某个地方。</p>

<p>设置为yes,好吧,你猜对了,解决了问题</p>

<p>亚历克斯</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么我不能在我的库中设置断点?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22911097/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22911097/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么我不能在我的库中设置断点?