2014-04-07 84 views
2

目标是调试库中的深层方法。为什么我无法在库中设置断点?

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

当我尝试手动设置断点,(break set -n),我得到: WARNING: Unable to resolve breakpoint to any actual locations.

的代码不会被调用,值得信赖的记录证实。

我的预感是调试信息被沿途某处失去了:我们正在建立一个静态库,然后又静态库(“框架”的风格),最后我们连接到这一点我们的应用程序。是的,这很复杂,但是,历史原因,你知道。

我试图检查第一个.a文件,看看发生了什么,但是当我尝试将它加载到lldb我必须创建一个目标。和创建目标的两种结构失败:

target create -d --arch i386 libFoo.a error: 'libFoo.a' doesn't contain the architecture i386

target create -d --arch armv7 libFoo.a
error: 'libFoo.a' doesn't contain any 'remote-ios' platform architectures: 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 Architectures in the fat file: libFoo.a are: armv7 i386

有没有人有一个好主意如何最好地解决这个问题?该代码是绝对的联系,工作,但LLDB不能设置断点。

非常感谢

附录:

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

如果我试图查找某些事情,有些人会返回一个文件和行号,另一些则不会:

image lookup -s Foo::faz() 1 symbols match 'Foo::faz()' in […]/Build/Products/Debug-iphoneos/Test.app/Test: Address: Test[0x00010334] (Test.__TEXT.__text + 22060) Summary: Test'Foo::faz() at Foo.cpp:858 image lookup -s FazBar 1 symbols match 'FazBar' in […]/Build/Products/Debug-iphoneos/Test.app/Test: Address: Test[0x00038eb4] (Test.__TEXT.__text + 188844) Summary: Test'FazBar

尝试在C中设置断点orresponding文件的产量,那么,预期的结果:

(lldb) break set -f Foo.cpp -l 877 Breakpoint 5: where = Test'Foo::faz() + 76 at Foo.cpp:877, address = 0x000cb380 (lldb) break set -f bar.c -l 585 Breakpoint 6: no locations (pending). WARNING: Unable to resolve breakpoint to any actual locations.

我怎样才能挖掘到某文件,看看为什么某些文件都没有发现?

+0

您使用异常断点 –

+0

没有,经常断点 – below

+0

这似乎已经被问了几次的http:// stackoverflow.com/questions/4025732/debugging-a-library-with-xcode和http://stackoverflow.com/questions/924628/how-to-set-breakpoint-in-a-dependent-xcode-project – Popeye

回答

0

enter image description here

组例外破发点像上面

去brekpoint导航点击+和slecte添加异常BRAK点

enter image description here

+0

我不知道这对我有何帮助。为什么我需要设置异常断点?或者你的意思是我应该抛出异常? – below

0

尝试使用DYLD_BIND_AT_LOAD环境变量设置。这应该禁用延迟绑定,这往往未能命中象征breaküpints

1

嗯,有人(其实不是我,只好设置 GCC_GENERATE_DEBUGGING_SYMBOLS = NO 某处隐藏很深的绝对好主意。

将其设置为yes,好了,你猜对了,解决这个问题

亚历

相关问题