问题标签 [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 回答
3495 浏览

macos - 基本 OS X 程序集和 Mach-O 格式

x86-64我对 Mac OS X 平台上的汇编编程很感兴趣。我遇到了这个关于创建 248B Mach-O 程序的页面,这让我找到了Apple 自己的 Mach-O 格式参考。之后我想我会在 Xcode 中制作同样简单的 C 程序并检查生成的程序集。

这是代码:

但是生成的程序集是 334 行,包含(基于 248B 模型)很多多余的内容。

首先,为什么 C 可执行文件的发布版本中包含这么多 DWARF 调试信息?其次,我注意到 Mach-O 标头数据包含 4 次(在不同的 DWARF-related 中sections)。为什么这是必要的?最后,Xcode 程序集包括:

但在 248B 程序中,这些都无处可见——程序反而从_start. 如果根据定义所有程序都开始于 ,那怎么可能main


完整的 Xcode 组装:

0 投票
1 回答
413 浏览

python - Mac System Python 的调试信息 - 如何获取行号

当我有一个包含一些 MacOSX 库的崩溃报告(在这种情况下,我对 Python 最感兴趣)时,我怎样才能获得有关它的更多信息?该库不包含调试信息,因此崩溃报告缺少行号和其他有用的东西。我可以在其他地方获取调试信息并重建行号吗?

0 投票
1 回答
108 浏览

gcc - 使用 DWARF 的类型安全链接

当 DWARF 格式包含我们需要的所有类型信息时,为什么 GCC 和 GNU ld 不支持类型检查链接?我们在公司试图让 Ada 和 C 安全通信上浪费了很多时间。问题是我们没有来自编译器的帮助,也没有链接来确保这些绑定保持同步。

0 投票
3 回答
5541 浏览

c++ - Gcc 4.8 DWARF4 与 DWARF2

GCC 4.8 支持 DWARF4。我想知道从用户的角度来看,DWARF4 和 DWARF2 有什么区别。

让我们从 GDB 的角度来看它。当您切换到 DWARF4 时,对用户有什么不同吗?

我找到了一个Dwarf 主页,但据我所知,网络上没有关于与用户 POV 差异的信息。

你能指出我这些不同之处吗?

0 投票
2 回答
7759 浏览

debugging - 检查编译单元的 DWARF 版本

所有,有没有工具可以检查文件的 DWARF 版本?像这样的东西:

0 投票
1 回答
661 浏览

c++ - c++ dwarf tag numbering format

Consider the following sample of dwarf code -

I have been working on a program that parses through dwarf files, and I am unsure of one part of it. If you notice, each tag has an extra number to the left of it (in this sample there is <0>, <1> and <2>). Im not really sure what it is. I think it is some sort of stack level or something, since <0> is given to the program as a whole, <1> is given to a top level class, and <2> is given to its member variables. However, I have not been able to find anything on it in the documentation. For reference, here is the original program -

0 投票
1 回答
1174 浏览

elf - Libdwarf - 如何从 ELF 文件中提取变量的大小和类型

我想在 Windows 下使用 libdwarf 库在 C 中创建一个程序,该库能够提取有关作为输入给出的变量的信息。程序应该以字节为单位输出变量的大小和类型(无符号、有符号、浮点)。

到目前为止,我能够在 Windows 下编译该库,但我很难弄清楚所有的库函数。我需要的是一个函数,它接受一个字符串(变量的名称)并输出一个 DIE 偏移量。之后,我可以使用其他函数在给定的 DIE 偏移处提取类型属性。

有这样的功能吗?

0 投票
1 回答
740 浏览

c++ - 矮人调试信息在构造函数上缺少数据

我正在查看从 c++ 文件生成的 dwarf 文件,我注意到它没有显示有关其中一个构造函数的任何信息。这是我的 C++ 文件 -

这是我的矮人文件-

关键部分如下——

本节包含有关 C 类的信息,包括采用 2 个整数的构造函数和构造函数之后的函数,但没有关于默认构造函数的信息。这是为什么?我在一个几乎相同的 c++ 文件上有另一个 dwarf 文件(两个 int 构造函数是一个 int 构造函数),它确实显示了有关默认构造函数的信息,那么为什么两个文件中都没有信息?注意:另一个文件是用稍微不同的编译器编译的。

编辑:如果你很好奇,我用来生成 dwarf 文件的命令是 -g++ -g -c test.cpp -o test.o然后是readelf --debug-dump=info >test.txt.

0 投票
2 回答
951 浏览

c++ - 如何使用 dwarf 确定非成员函数中的局部静态变量

我试图使用 dwarf 来比较两个 c++ 文件,但是当我在非成员函数中获取局部变量时遇到了问题。考虑以下代码 -

如果我在没有修饰符的情况下编译它,static我会得到以下侏儒信息 -

但是如果我static修饰符编译它,我会得到-

现在据我所知,这些文件之间只有一个真正的区别——DW_AT_location变量 j 的属性上的字节块大小不同(这就是为什么DW_AT_sibling函数 f 的标签中的属性不同,所以我不算)。我认为这在某种程度上意味着静态,但我不知道如何。

0 投票
1 回答
466 浏览

c++ - 使用调试选项时 dwarfdump 为空

我正在尝试使用 dwarfdump 从 C++ 文件中获取 DWARF 信息。C++ 文件非常简单——

我通过做来编译它g++ -g -c test.cpp。然后我做dwarfdump test.o了,但由于某种原因我得到了

为什么是这样?我怎样才能得到我的调试矮人信息?