- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下矮人代码示例 -
<0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
<c> DW_AT_producer : (indirect string, offset: 0xd): GNU C++ 4.3.0 20080428 (Red Hat 4.3.0-8)
<10> DW_AT_language : 4 (C++)
<11> DW_AT_name : (indirect string, offset: 0x75): test.cpp
<15> DW_AT_comp_dir : (indirect string, offset: 0x4d): /home/dwarf
<19> DW_AT_low_pc : 0x0
<21> DW_AT_high_pc : 0xb
<29> DW_AT_stmt_list : 0x0
<1><2d>: Abbrev Number: 2 (DW_TAG_class_type)
<2e> DW_AT_name : C
<30> DW_AT_byte_size : 8
<31> DW_AT_decl_file : 1
<32> DW_AT_decl_line : 1
<33> DW_AT_sibling : <0x86>
<2><37>: Abbrev Number: 3 (DW_TAG_member)
<38> DW_AT_name : x
<3a> DW_AT_decl_file : 1
<3b> DW_AT_decl_line : 7
<3c> DW_AT_type : <0x86>
<40> DW_AT_data_member_location: 2 byte block: 23 0 (DW_OP_plus_uconst: 0)
<43> DW_AT_accessibility: 3 (private)
<2><44>: Abbrev Number: 3 (DW_TAG_member)
<45> DW_AT_name : y
<47> DW_AT_decl_file : 1
<48> DW_AT_decl_line : 8
<49> DW_AT_type : <0x86>
<4d> DW_AT_data_member_location: 2 byte block: 23 4 (DW_OP_plus_uconst: 4)
<50> DW_AT_accessibility: 3 (private)
我一直在研究一个通过 dwarf 文件进行解析的程序,但我不确定其中的一部分。如果您注意到,每个标签的左侧都有一个额外的数字(在此示例中有 <0>、<1> 和 <2>)。我不太确定那是什么。我认为这是某种堆栈级别或某种东西,因为 <0> 被赋予整个程序, <1> 被赋予顶级类,而 <2> 被赋予其成员变量。但是,我无法在 documentation 中找到任何内容。 .作为引用,这里是原始程序 -
class C {
public:
C();
C(int x, int y);
int getX();
private:
int x;
int y;
};
class SubC : public C {
int z;
};
int f() {return 0;}
C c;
SubC subC;
int i;
double d;
最佳答案
DWARF DIE 被组织成一棵树 - 单个文件的顶级 DW_TAG_compile_unit
将包含所有类型定义(例如 DW_TAG_class_type
)、所有函数(DW_TAG_subprogram
) 和全局/静态变量 (DW_TAG_variable
)。类定义 (DW_TAG_class_type
) 将是父 DIE 并包含子项,例如用于成员变量的 DW_TAG_member
或用于方法的 DW_TAG_subprogram
。
您附加的输出是您特定的 DWARF 转储程序的运行方式 - 看起来它正在使用该数字来显示父/子关系。这是 readelf
吗?其他 dwarf dumper 程序可能会选择以不同的方式显示这一点。在 Mac OS X 上,dwarfdump
显示了这种与缩进的关系 - 子 DIE 的缩进比父 DIE 多一点。
如果您正在查看 http://dwarfstd.org/ 上的 DWARF 规范你不会在标准中找到关于这个数字的任何信息——但是如果你编写一个真正的 DWARF 解析器(而不是解释 readelf
或其他任何输出的解析器),你会看到DWARF4 规范中的第 2.3 节(“调试信息条目的关系”)和第 7.5.3 节“缩写表”(DW_CHILDREN_yes
或 DW_CHILDREN_no
)涵盖了该主题。
关于C++ dwarf 标签编号格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946281/
谁能帮我写一个程序,它可以读取 DWARF 文件并给我文件名、行号和函数名的详细信息。 最佳答案 DWARF-2 和 DWARF-3 的规范在这里: http://dwarfstd.org/dwarf
XCode 支持此build设置的这 2 个值: build设置 > 构建选项 > 调试信息格式。 谁能解释一下区别? 最佳答案 不同之处在于,对于带有 dSYM 文件的 DWARF,您的存档 app
我想知道使用属性 DW_AT_location 进行调试。它是 dwarf 指定用于调试的属性之一,但无法真正理解它到底代表什么。以及当我们编译代码时应该什么时候发出这个属性。 最佳答案 来自 DWA
好的,我已经使用 Linux Dwarf ldw 库将 backtrace_symbols 输出转换为源代码和行号,但遇到了障碍。 backtrace_symbols 给出内存中的偏移量,在用作 Dw
考虑以下矮人代码示例 - : Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_producer : (indirect string, o
warning: invalid DWARF generated by the compiler: DIE 0x000629bb has multiple AT_decl_line attribute
我玩Dwarf Fortress游戏。对我来说主要的挑战是有效地设计堡垒的布局。这意味着,每个行业流应尽可能密集,以尽量减少行进距离。 食品行业就是一个例子 .每个灰色椭圆代表一座建筑物。每个白色矩形
对于 C/C++ 源文件中的任何元素,我希望能够在其编译的可执行文件中确定相应的内存位置。通过调试进行编译并使用生成的 DWARF 信息对实现这一目标大有帮助,但离我的目标还差得很远。 GCC 生成的
所有, 有没有工具可以检查文件的 DWARF 版本?像这样的东西: $ dwarf_tool binary_name 4 最佳答案 在Linux环境下?如果你安装了 GCC,你应该有 readelf可
我有一个通过内存跟踪程序执行的应用程序。我尝试使用 readelf --debug-dump=decodedline获取内存地址/行号信息,但我看到的内存地址通常与该转储给出的内存地址不匹配。我写了一
GCC 在其 DWARF 调试信息(使用 -g 编译时)中包含用于生成目标文件的源文件的路径。 然而,GDB的search rules意味着我必须使用鲜为人知的 set subsitute-path如
我试图将我对“DWARF”与“DWARF with dSYM file”调试信息格式的理解映射到我在不同 iOS 构建配置的崩溃信息中看到的内容。 我试图解决一个问题,即默认情况下不会对使用调试配置的
如何通过 DWARF 的引用获取我的变量地址? 例如我们有下一个结构: struct sub_struct { int a, b; sub_struct(int a, int b) :
我有一个 ARM 二进制文件,我需要准确找到其函数序言结束和尾声开始的地址。换句话说,我需要函数体的边界。例如,如果我有一个函数,其程序集类似于: 0x00000320 : push {r
有没有一种简单的方法可以让 Linux 进程访问它自己的 DWARF 调试信息?我有一个进程想要将一个特定编译单元的 DWARF 信息转储到日志文件中。 这是为了简化一些物流。我有包含原始 C 结构的
尝试构建时,我在 Xcode 4 中遇到以下错误: libIOSCoreSDK.a(Logging.o) object file doesn't contain DWARF debug informa
例如: : Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_producer : (indirect string, offset: 0
有没有办法将调试信息从 binutils 的 DWARF 格式(例如,由 Cygwin 上的 GCC 发出)转换为 Microsoft PDB(由 Visual Studio 使用)? 最佳答案 cv
在 perf record --call-graph dwarf 生成的回溯中由 perf script 打印,我一直在为大约 5% 的调用堆栈获取错误的地址,即展开失败。一个例子是 my_bin 7
我正在尝试从 DWARF 信息中获取有关调用约定的信息。更具体地说,我想了解哪些寄存器/堆栈位置用于将参数传递给函数。我的问题是,在某些情况下,我从 DWARF 转储中获得了某种错误的信息。我使用的示
我是一名优秀的程序员,十分优秀!