|
|
1
5
好吧,另一个“诀窍”继续进行一个编译和链接步骤将是添加
|
|
2
11
与其他UNIXen不同,在MacOS上,调试信息不会链接到可执行文件中。相反,可执行文件有一个链接到其中的对象文件列表,调试器在这些单独的对象文件中查找调试信息。 如果删除对象文件,则无法调试。
这是最后一步,它阻止您调试。
这会离开的
|
|
|
3
2
在我看来,您有两个问题:1)可执行文件没有调试符号,2)某些生成警告的共享库没有调试符号。我也有问题2)。他回答了1),并为我指出了2)的正确方向。 首先,如果您不需要调试警告中提到的库,那么可以安全地忽略它们。当然,这些警告很烦人,可能会掩盖其他问题。在你我的例子中,MacPorts安装的库应该去掉调试符号,但是没有。正如俄罗斯人所说,引起警告的原因是,符号本身保存在生成过程中生成的对象文件中,而不是安装在库中。这些库存储指向对象文件的指针,作为它们(最小)调试信息的一部分。 您可以使用strings命令来验证这一点。如果在加载libsomething.dylib时发现/crazy/path/to/something.o警告:
请注意,您需要“-”(这是我第一次看到的)。 要修复它,请剥离调试信息,如下所示:
之后,'dwarfdump--file stats libsomething.dylib'应该显示“STABS debug”部分为空(指向对象文件的链接以STABS debug格式存储。) 别再发出难听的警告了。。耶! 那是 太难了。 |