gpt4 book ai didi

c - dsymutil 的 --flat 选项的预期用途是什么

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:19 25 4
gpt4 key购买 nike

dsymutil 手册页指出 dsymutil 有一个名为 --flat 的选项,它将创建单个文件调试包,其中.dwarf 扩展名。我尝试了这个,虽然确实创建了预期的 .dwarf 文件,但 lldb 似乎并没有实际加载它们,这与生成常规 不同。 dSYM 目录。除了手册页上所说的,我找不到很多文档。

这些文件是否有预期的场景,或者这是很久以前遗留下来的不应再使用的东西?

它很有吸引力,因为作为单个文件,在构建系统中管理它会更容易,而不是需要管理生成的 .dSYM 目录。

$ cat > hello_world.cpp
#include <iostream>

int main() {
std::cout << "Hello, World\n";
return 0;
}

$ clang++ ./hello_world.cpp -g -c -o hello_world.o
$ clang++ ./hello_world.o -o hello_world

$ dsymutil ./hello_world

$ tree ./hello_world.dSYM
./hello_world.dSYM
└── Contents
├── Info.plist
└── Resources
└── DWARF
└── hello_world

$ lldb hello_world
(lldb) target create "./hello_world"
Current executable set to './hello_world' (x86_64).
(lldb) image list
[ 0] 7984B8FE-1C4E-3468-9819-C3BE4E50456D 0x0000000100000000 .../hello_world
.../hello_world.dSYM/Contents/Resources/DWARF/hello_world

$ \rm -rf hello_world.dSYM
$ dsymutil --flat ./hello_world
$ file hello_world.dwarf
hello_world.dwarf: Mach-O 64-bit dSYM companion file x86_64

(lldb) target create "./hello_world"
Current executable set to './hello_world' (x86_64).
(lldb) image list
[ 0] 7984B8FE-1C4E-3468-9819-C3BE4E50456D 0x0000000100000000 .../hello_world
[ 1] F217F7F8-A795-3109-B77F-B1E2277F3E3B 0x0000000000000000 /usr/lib/dyld

如您所见,lldb 愉快地自动查找并加载 .dSYM,但不会为 .dwarf 执行此操作文件版本。

有没有办法让 lldb 加载这些文件,或者更好的是,自动加载它们?其他工具?是否需要一些其他步骤将可执行文件“链接”到 .dwarf 文件,就像 --add-gnu-debuglink 的模拟?或者 dsymutil --flat 是不是真正受支持并且应该避免的东西?它有任何用例吗?

最佳答案

--flat 选项不受真正支持。它的存在是为了测试,我们通常要检查生成的 DWARF,而不是应该始终相同的 dSYM 包结构。

关于c - dsymutil 的 --flat 选项的预期用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55894249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com