This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 第三方工具的 DWARF 3与 DWARF 4

Guru**** 2041660 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1220659/dwarf-3-vs-dwarf-4-for-3rd-party-tools

这只是一个警示、其他人使用第三方 EABI 分析器进行 POST 处理。

对于 EABI、CCS 默认二进制输出是 DWARF 4。 然而 DWARF 4似乎是一些第三方的解析者的问题。 以下工具无法在 DWARF4 EABI .out 文件中"查找"某些或所有 DWARF 符号。

1)引导程序 ASAP2工具集 v15.0 (ASAP2Updater.exe):

   未找到结构成员符号。 可以找到其他符号。

2) DWARF Explorer (dwex) 2.31: 注意"Warf Explorer"明确表示它支持 DWARF v2至 v5。

   未列出头文件、因此缺少.h 文件中定义的符号。

3) ASAP2Demo 8.0.61 C2000 ELF 同步 工具:

   未找到 DWARF 符号。 DWARF 符号窗口为空。

在本例中、权变措施是将 CCS 输出更改为 DWARF v3。

所有提到的工具现在都能够检测 DWARF 符号、例如:

我将向工具供应商指出这篇文章、但如果 CCS 专家有任何技巧、请他们在此处发表评论会很好。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     TI 编译器中的 Dwarf 4 一文非常贴切。

    谢谢。此致、

    -George.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复和链接。 我已经阅读了两遍了、但看不到这可能解释了我所看到的问题。

    在 DWARF4输出中、似乎不会发出头文件中的结构符号。 这是否有意为之? 这可以在附加的演示二进制文件中看到。

    e2e.ti.com/.../driverlib_5F00_lp_5F00_f28003x_5F00_foo.zip

    v3文件中显示的结构成员 member1和 Member2不会出现在 v4 .out 文件中。

    我要求 DWEX 作者对文件发表评论。 他说:

    "在 DWARFv4二进制的 readelf 输出中、没有 lab_main.h 的编译单元 v3文件中有198个 CU、v4文件中有197个 CU。

    我想我们可以放心地得出这样的结论,即"

    到目前为止的证据表明、CCS 的 DWARF4输出无法被其他工具使用、这有点超出了调试信息标准的范围。

    请您向开发人员核实一下、并解释在这种情况下为什么 DWARF4文件中应该缺少 lab_main.h 编译单元?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用该实用程序 ofd2000 以检查 输出 文件。   C28x 汇编工具手册中介绍了相关内容。  我使用了这些命令...

    Fullscreen
    1
    2
    % ofd2000 -g "driverlib_lp_f28003x_foo(DWARF3).out" > d3.txt
    % ofd2000 -g "driverlib_lp_f28003x_foo(DWARF4).out" > d4.txt
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在 Dwarf3中、显示有关包含的结构的信息 成员1. 成员2. 和 typedef 创建 foo_st 都包含在单个中 dw_tag_compile_unit

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    00001c90 2 DW_TAG_compile_unit
    00001c91 DW_AT_name ..\lab_main.h
    00001c95 DW_AT_stmt_list .debug_line(21) + 0x465
    00001c99 DW_AT_language DW_LANG_C
    00001c9a DW_AT_comp_dir W:\Examples\driverlib_lp_f2800
    3x\CPU1_FLASH
    00001c9e DW_AT_producer TI TMS320C2000 G3 C/C++ Codege
    n PC v22.6.0.LTS Copyright (c)
    1996-2018 Texas Instruments I
    ncorporated
    00001ca2 DW_AT_TI_version 1
    00001ca3 3 DW_TAG_structure_type
    00001ca4 DW_AT_sibling .debug_info(20) + 0x1cd5
    00001ca8 DW_AT_byte_size 2
    00001ca9 DW_AT_decl_column 16
    00001caa DW_AT_decl_file 1
    00001cab DW_AT_decl_line 12
    00001cac 1 DW_TAG_member
    00001cad DW_AT_name member1
    00001cb1 DW_AT_accessibility 1
    00001cb2 DW_AT_data_member_location DW_OP_plus_uconst 0
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在 Dwarf4中、相同的信息被拆分为两个不同的部分 dw_tag_type_unit 条目。   

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    000000ab 48 DW_TAG_type_unit
    000000ac DW_AT_stmt_list .debug_line(22) + 0x2498
    000000b0 DW_AT_producer TI TMS320C2000 Linker PC v22.6
    .0 Copyright (c) 1996-2018 Tex
    as Instruments Incorporated
    000000b4 15 DW_TAG_structure_type
    000000b5 DW_AT_sibling (null)
    000000b9 DW_AT_byte_size 2
    000000ba DW_AT_decl_column 16
    000000bb DW_AT_decl_file 7
    000000bc DW_AT_decl_line 12
    000000bd 8 DW_TAG_member
    000000be DW_AT_name member1
    000000c6 DW_AT_accessibility 1
    000000c7 DW_AT_decl_column 14
    000000c8 DW_AT_decl_file 7
    000000c9 DW_AT_decl_line 13
    000000ca DW_AT_type 0x8d8a42f3ebac3771
    000000d2 7 DW_TAG_member
    000000d3 DW_AT_name member2
    000000db DW_AT_accessibility 1
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    也许这些其他的 Dwarf 实用程序不处理 dw_tag_type_unit 条目。

    解释为什么 DWARF4文件中缺少 lab_main.h 编译单元

    我同意这个字符串 lab_main.h 应该会显示在 Dwarf4信息中的某个位置。  我不知道为什么它不在那里。  我无法以小规模的方式重现此行为。  您的构建是否作为 CCS 项目进行组织?  如果是、请按照文章 共享项目中所述进行压缩、并 zip 文件附加到您的下一篇文章中。

    谢谢。此致、

    -George.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢您的分析 George。 我会记下该实用程序。

    请查看随附的整个 CCS 工程、我从中生成了示例.out 文件。

    e2e.ti.com/.../driverlib_5F00_lp_5F00_f28003x.zip

    这一点现在开始变得有意义了。 在 CCS 调试器中监视 myFoo 结构似乎并不依赖于是否存在封闭式编译单元。 其他工具(例如 DWEX)依赖于在 cus 上下文中显示符号。 无 CU、无符号。

    我认为、如果我们能让 lab_main.h 编译单元出现在.out 文件中、那么所有工具的问题就有望得到解决。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提交项目。

    我想如果我们能让 lab_main.h 编译单元显示在.out 文件中

    它不像这样工作。  可以回忆一下 lab_main.h 不会出现在 Dwarf 信息中。  即便如此、CCS 也能了解该文件并根据需要对其进行读取。  在 CCS 中、将鼠标悬停在其上 foo_st 指定 lab 的 main.c 并查看...

    我在这些行文中添加了这两条评论,以证明这不是以机械方式复制的。  CCS 必须复制其中的行 lab_main.h 以创建该显示。   

    这不是一件不寻常的事。  在之前的几行中、键入 name uint64_t 出现了。  将鼠标悬停在上面并查看...

    该行从 C:/ti/ccs1200/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include/sys/_stdint.h.复制而来  而不是字符串 stdint _stdint 不出现在 Dwarf 信息的任何位置。   

    所有这些在幕后如何工作?  我不知道。  CCS 以 Eclipse 开源项目为基础。  我担心将 Dwarf 信息映射到这些源代码行的代码深于开源代码。  这意味着可能很难弄清楚细节。

    谢谢。此致、

    -George.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所有这些工作在幕后如何进行?

    我的理解是、将鼠标悬停在 CCS 编辑器中的符号上时、"弹出窗口"会显示此类信息、Eclipse 索引器用于解析源代码、而不是提取任何 DWARF 调试信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于我在本主题中犯的一些错误、我深表歉意。

    第一个是、我错误地认为 Dwarf 调试信息用于创建显示将鼠标悬停在类型名称上时 CCS 显示。  而是使用分度器。  如果禁用索引器、则该功能将停止工作。   

    我也怀疑这是不正确的...

    我同意该字符串 lab_main.h 应显示在 Dwarf4信息中的某个位置。

    内部讨论仍在进行中,因此我不确定。  我会回来解答您的问题。

    目前的证据表明,CCS 的 DWARF4输出无法被其他工具使用,这有点不如调试信息的标准。

    Dwarf 标准不要求使用任何特定的 Dwarf 标签或属性。  但在使用它们时,与它们相关的含义是标准中所定义的。  因此、允许在中指定类型信息 dw_tag_compile_unit 或 A dw_tag_type_unit 。  不幸的是,考虑到我们不知道的对第三方工具的影响,我们开发和测试编译器(包括 Dwarf 信息)是不切实际的。

    谢谢。此致、

    -George.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我同意该字符串 lab_main.h 应显示在 Dwarf4信息中的某个位置。

    我提交了 EXT_EP-11147条目 、请求对此情况进行调查。  我们欢迎您通过这个链接来了解这一点。  请注意、它被归档为增强功能、而不是错误。  这是因为、对于 CCS 和其它由 TI 提供的工具、这个运行方式不会引起任何问题。  尽管如此、它还是值得开发团队仔细研究。

    谢谢。此致、

    -George.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢提升的增强。