我希望能够通过调试符号静态链接libc的构建,然后通过lldb运行我的程序。
otool -L <my binary>
使它看起来像唯一的动态链接库(dll):
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
我猜的是libc dll(尽管nm
没有列出我在libc中所期望的一切)。也许只是某种存根加载器。
在/usr/lib/
中,Apple似乎没有提供libSystem的调试版本。
如何在OSX上调试libc(10.11.3)?
可能重复: On Mac OS X, how can you get a debug build of System/LibC for source level debugging?
答案 0 :(得分:2)
我很难跟踪你的问题,但我认为有一些问题可以涵盖你所提出的问题:
otool -L将显示您要链接的所有dylib。
/usr/lib/libSystem.B.dylib是一个伞库,可以重新导出多个dylib,包括libc(/usr/lib/system/libsystem_c.dylib)。如果您想查看哪些符号是系统C运行时的一部分,您将需要在该dylib上使用nm,而不是libSystem。
如果您在自己的libc中静态链接,那么它就不会出现在&tutool -L&#39;因为它是一个静态库,因此是你可执行文件的一部分。
如果您将自己的libc链接到可执行文件中,那么在二进制文件上使用nm可能无法显示您期望的所有符号,因为链接器将优化您的可执行文件不需要的死代码。您可以使用ld的-force_load选项确保添加所有内容。查看ld手册页以获取更多详细信息。