问题标签 [dwarf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - dSYM 地址查找
我已经从 iOS 应用程序的 dSYM 文件中解析出地址、文件名和行号。我基本上有一个将地址映射到文件名和行号的表,这对调试很有帮助。
为了获得actual lookup address
,我使用崩溃报告中的堆栈跟踪地址并使用此答案中指定的公式:https ://stackoverflow.com/a/13576028/2758234 。所以像这样。
我使用那个地址并在我的桌子上查找它。我得到的文件名是正确的,但是行号始终指向被调用的函数或方法的末尾,而不是在堆栈跟踪上调用以下函数的实际行。
我在某处读过,不记得在哪里,必须取消标记帧地址,因为它们对齐以使系统指针大小加倍。所以对于 32 位系统,指针大小是 4 字节,所以我们使用 8 字节去标记,使用如下公式:
其中uintptr_t
是用于 Objective-C 中指针的数据类型。
这样做之后,查找排序工作,但我必须做一些事情,比如找到小于或等于去标签地址的最近地址。
问题 #1:
为什么我必须取消标记堆栈帧地址?为什么堆栈跟踪中的地址没有指向正确的位置?
问题 #2:
有时在崩溃报告中似乎缺少帧。例如,如果function1()
调用function2()
which callsfunction3()
which callsfunction4()
,在我的堆栈跟踪中,我将看到如下内容:
并且(上面的第 2 帧)的堆栈跟踪地址function3()
甚至没有指向正确的行号(但它是正确的文件),即使在取消标记之后也是如此。即使我让 Xcode 表示崩溃报告,我也看到了这一点。
为什么会这样?
debugging - 如何找到 DWARF 符号的 ELF 部分?
我有一个带有 DWARF 调试信息的 ELF 文件。给定一个 DWARF 符号(比如函数 foo()),我想找出它所在的 ELF 部分。我不能对每个部分的范围进行 PC 匹配,因为文件有覆盖部分,所以有多个部分具有相同的映射地址范围。换句话说,如果符号位于覆盖部分之一,则其地址将匹配所有覆盖部分的地址范围。
提前感谢您的帮助。
llvm - readelf 显示非空 debug_ranges 但在 llvm 中显示为空
我已经通过 MCJIT 生成了一个带有调试信息的 ELF 对象,但是当我在 LLVM 中读回它时,它会发现一个空debug_ranges
部分,即使那里应该有数据。我已将目标文件转储到磁盘,实际上:
用plain 倾倒llvm-dwarfdump objfile
给出了稍微更详细的信息:
所以看起来数据写入成功但没有正确读取。有什么想法会导致这种情况,我该如何解决?
我使用 LLVM 3.2 生成了目标文件,并尝试llvm-dwarfdump
了 3.2 和 top-of-trunk。
gcc - 在 dwarf 格式的调试信息中更改 DW_AT_name
我正在使用 gcc 编译 u-boot,它会生成 dwarf info :
...
<74cb> DW_AT_name :(间接字符串,偏移量:0x1a6a):board.c
<74cf> DW_AT_comp_dir :(间接字符串,偏移量:0x2689):/root/file/u-boot/u-boot-am33x/arch/arm/lib
...
应该添加什么选项来将 DW_AT_name 从“board.c”更改为“/root/file/u-boot/u-boot-am33x/arch/arm/lib/board.c”?这意味着 DW_AT_name 包含源文件的完整路径?
c++ - 查找库是由 SJLJ 还是 DWARF2 编译器编译的
有没有办法确定库档案是使用 SJLJ 还是 DWARF2 异常处理编译器构建的?该库是使用 32 MinGW 编译的。
gcc - 将赋值的左侧变量与右侧函数调用的返回值匹配
对于 function 中的以下语句func()
,我试图找出指向 malloc 内存区域的变量名称(在示例中为“字典”)。
被检测的malloc()
可以记录分配的起始地址和大小。但是,不知道将分配给变量“字典”,编译器方面的任何功能都可以帮助解决这个问题,而不需要修改编译器来检测这样的赋值语句?
我一直在考虑的一种方法是使用变量“字典”和函数“malloc”在一个源代码行上或彼此相邻的特性,矮人提供行信息。
gcc - 如何在 systemtap 中检查用户空间函数的变量?
在 systemtap 中检查用户空间应用程序的局部变量时遇到问题。
我这样写一个test.c:
并编译它-g
Systemtap 可以看到func()
:的变量p
和val
所以我使用这个 stp 来观察变量:
但是测试程序执行时结果中的局部变量不正确,它显示:
我正在使用 fedora19:
有人可以遇到这个问题或给我一个解决方案吗?
ios - 如何将 .dSYM 文件解码为显式 DWARF 格式?
DWARF 是一种调试信息格式。Xcode 生成的 .dSYM 文件包含 DWARF 调试信息。
问题是:如何解码 .dSYM 文件以获得人类可读的 DWARF 信息,如下所示。
debugging - 关于创建 obj 文件的 GNU C 编译
什么是 DWARF 的完整形式,正如我在 objdump 分析中所见,学习 DWARF 调试信息格式。我试过分析一个简单的程序
我想分析这在 .o 文件中的指令中是如何出现的?请问有人可以帮忙吗?
我也想用 (objdump -d file.o) 映射我的程序,