问题标签 [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.

0 投票
1 回答
2939 浏览

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 表示崩溃报告,我也看到了这一点。

为什么会这样?

0 投票
1 回答
605 浏览

debugging - 如何找到 DWARF 符号的 ELF 部分?

我有一个带有 DWARF 调试信息的 ELF 文件。给定一个 DWARF 符号(比如函数 foo()),我想找出它所在的 ELF 部分。我不能对每个部分的范围进行 PC 匹配,因为文件有覆盖部分,所以有多个部分具有相同的映射地址范围。换句话说,如果符号位于覆盖部分之一,则其地址将匹配所有覆盖部分的地址范围。

提前感谢您的帮助。

0 投票
0 回答
280 浏览

llvm - readelf 显示非空 debug_ranges 但在 llvm 中显示为空

我已经通过 MCJIT 生成了一个带有调试信息的 ELF 对象,但是当我在 LLVM 中读回它时,它会发现一个空debug_ranges部分,即使那里应该有数据。我已将目标文件转储到磁盘,实际上:

用plain 倾倒llvm-dwarfdump objfile给出了稍微更详细的信息:

所以看起来数据写入成功但没有正确读取。有什么想法会导致这种情况,我该如何解决?

我使用 LLVM 3.2 生成了目标文件,并尝试llvm-dwarfdump了 3.2 和 top-of-trunk。

0 投票
1 回答
841 浏览

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 包含源文件的完整路径?

0 投票
3 回答
831 浏览

c - 使用 gcc 4.8.2 的 DW_AT_high_pc 的 DWARF 信息似乎是错误的

作为 DWARF 的新手,我尝试了此页面中提供的代码(代码在此处),但是当我启动它时,我得到:

在调试会话之后,问题似乎来自第 78 行:

问题是,form节目attrs[i]不是attrs[i]地址(它设置为 7 而不是 1)。tracedprogobjdump它探索do_stuff功能:

在这个输出中,DW_AT_high_pc对我来说似乎不正确,因为它只有两个八位字节长。

供您参考,我编译tracedprog

编辑它似乎是一个gcc问题,因为在另一台机器上没有问题。我正在使用gcc 4.8.2.

0 投票
1 回答
104 浏览

c++ - 查找库是由 SJLJ 还是 DWARF2 编译器编译的

有没有办法确定库档案是使用 SJLJ 还是 DWARF2 异常处理编译器构建的?该库是使用 32 MinGW 编译的。

0 投票
1 回答
76 浏览

gcc - 将赋值的左侧变量与右侧函数调用的返回值匹配

对于 function 中的以下语句func(),我试图找出指向 malloc 内存区域的变量名称(在示例中为“字典”)。

被检测的malloc()可以记录分配的起始地址和大小。但是,不知道将分配给变量“字典”,编译器方面的任何功能都可以帮助解决这个问题,而不需要修改编译器来检测这样的赋值语句?

我一直在考虑的一种方法是使用变量“字典”和函数“malloc”在一个源代码行上或彼此相邻的特性,矮人提供行信息。

0 投票
1 回答
1468 浏览

gcc - 如何在 systemtap 中检查用户空间函数的变量?

在 systemtap 中检查用户空间应用程序的局部变量时遇到问题。

我这样写一个test.c:

并编译它-g

Systemtap 可以看到func():的变量pval

所以我使用这个 stp 来观察变量:

但是测试程序执行时结果中的局部变量不正确,它显示:

我正在使用 fedora19:

有人可以遇到这个问题或给我一个解决方案吗?

0 投票
1 回答
2575 浏览

ios - 如何将 .dSYM 文件解码为显式 DWARF 格式?

DWARF 是一种调试信息格式。Xcode 生成的 .dSYM 文件包含 DWARF 调试信息。

问题是:如何解码 .dSYM 文件以获得人类可读的 DWARF 信息,如下所示。

在此处输入图像描述

0 投票
1 回答
67 浏览

debugging - 关于创建 obj 文件的 GNU C 编译

什么是 DWARF 的完整形式,正如我在 objdump 分析中所见,学习 DWARF 调试信息格式。我试过分析一个简单的程序

我想分析这在 .o 文件中的指令中是如何出现的?请问有人可以帮忙吗?

我也想用 (objdump -d file.o) 映射我的程序,