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.

[参考译文] TMS320F280039:如何在 Code Composer Studio 12.4.0 中使用 gcc 的-fsaniize=address 和-fsaniize=leak 选项

Guru**** 2902770 points

Other Parts Discussed in Thread: TMS320F280039

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/1640082/tms320f280039-how-to-use-the--fsanitize-address-and--fsanitize-leak-options-of-gcc-in-code-composer-studio-12-4-0

器件型号: TMS320F280039

如何在 Code Composer Studio 12.4.0 中使用 gcc 的-fsaniize=address 和-fsaniize=leak 选项来检测与 AUTOSAR OS 中的地址和存储器相关的问题?

谁知道是否支持此功能? 如果是、应如何使用? AUTOSAR OS 项目是否会与其他项目冲突? 

非常感谢!

image.png

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

    Zackary、á lez

       感谢您的答复。     您的解决方案有一些问题。  

       我找不到配置“CCS 堆分配跟踪器“、但找到了相关信息。 我不确定这是否是由于软件版本的差异造成的。
       此外、我也找不到“Run Static Analysis“选项。

       您能否确认我的软件应该如何找到上述两个配置选项?

       期待您的答复。

    此致、

    林康

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

    您好 Lin、

    感谢您的跟进。 您很难找到这两个功能、这是可以理解的、上一个响应中提供的确切菜单路径可能无法准确反映 CCS 12.4.0 中针对 C2000 器件系列提供的功能。 让我澄清一下我们可以确认的内容和应该尝试的方法。


    定位静态分析 (“代码分析“)

    在 CCS v12 中、静态分析 Project→Run Static Analysis 下。 根据 C2000 器件的 CCS v12 工具菜单、相关选项位于:

    工具→代码分析 [1]

    它与 RTOS Analyzer、System Analyzer 和 Hardware Trace Analyzer 等其他分析选项一起显示在 CCS v12 Tools 菜单中[1]。 重要说明: 您必须在 调试视图 中(主动连接到您的目标)、才能显示其中的一些工具菜单项。 如果您在 CCS Edit 透视图中、菜单可能看起来不同。


    查找内存调试视图

    CCS 提供了可从 “View“ 菜单而不是“Project Properties“访问的与存储器相关的视图。 在 CCS 中、View(视图)菜单包括[2]:

    • Memory Browser —在运行时检查 RAM、闪存和外设寄存器
    • Memory Allocation (内存分配)—用于分析动态内存分配的视图
    • Stack Usage (堆栈使用情况)—分析堆栈内存消耗

    要访问这些内容: “View“→“Memory Allocation““View“→“Stack Usage“ [2]。 连接到您的目标时、这些应该可以在“Debug(调试)“透视图中找到。


    运行时对象视图 (ROV)

    如果您的工程使用 RTOS、 则 Runtime Object 视图是另一个用于检查堆和栈状态的强大工具。 通过以下方式访问:

    工具→运行时对象视图 [3]

    或在调试会话期间点击 CCS 工具栏中的 ROV 网格图标[3]。 ROV 可按 malloc() [4]显示堆统计信息、包括基址、大小和使用情况。 注意:ROV 要求您 先暂停 CPU、然后才能读取内存状态[3]。


    关于“堆分配跟踪器“

    我无法确认 CCS 12.4.0 中的 C2000 编译器是否存在上一个响应(在 Project→Properties→C/C++ Build→Settings→TI C/C++ Compiler→Advanced Options→Runtime Support 下)中所述的特定“Enable heap allocation tracking“复选框。 C2000 工具链文档不会专门验证此菜单路径。

    可以 确认作为替代方案的内容:

    1. HeapTrack (如果使用 TI-RTOS/SYS/BIOS)- HeapMem 之上构建的一个模块、专门用于调试堆、可检测内存泄漏、双倍释放和缓冲区溢出[5]。 它会为每个分配添加一个跟踪器结构、并通过 ROV 显示结果。

    2. ERAD(嵌入式实时分析和诊断) - TMS320F280039 支持这个硬件调试模块、该模块提供硬件断点、观察点和分析计数器、以非侵入式监控 CPU 运行[6]。


    建议的后续步骤

    1. 切换到 Debug 透视图 、并选中 Tools→Code Analysis 以进行静态分析
    2. 点击“View“→“Memory Allocation“ 点击“View“→“Stack Usage“以查看运行时内存视图
    3. 如果使用任何 RTOS 组件、请尝试“Tools“→“Runtime Object“视图
    4. 对于编译器运行时检查(,,)--check_pointer --check_stack --check_bounds、请在 Project→Properties→C/C++ Build→Settings→TI Compiler→Advanced Options 下查看

    为帮助完善这些建议、了解以下内容会有所帮助:

    • AUTOSAR 操作系统是否基于 TI-RTOS 组件构建(这将启用 HeapTrack 和 ROV 支持)
    • 您尝试检测的特定内存问题(泄漏,缓冲区溢出,自由使用,堆栈溢出)—这将有助于缩小最佳工具的范围

    1. CCS v12 工具菜单 — 片上闪存工具位置(C2000 入门指南)
    2. CCS View 菜单 — 存储器分配和堆栈使用选项(AM64X EVM 设置)
    3. 使用具有实时对象视图 (ROV) 的 SDK
    4. ROV 堆信息显示 (J722S SDK)
    5. HeapTrack 模块 — 内存泄漏和调试检测
    6. C2000 ERAD — 嵌入式实时分析和诊断

    此致、

    Zackary Fleenor

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

    您好 Lin、

    我想跟进我们针对您的 TMS320F280039 AUTOSAR OS 工程讨论的存储器调试选项。 我上次答复大约已经三周了、我想查看一下、看看您是否能够在 CCS 12.4.0 中找到相关工具、或者您是否需要任何其他指导。

    快速回顾我们所涵盖的内容:

    • 代码分析: Tools→Code Analysis(在调试视图中)
    • “Memory Views“: “View“→“Memory Allocation“并“View“→“Stack Usage“
    • 运行时对象视图 (ROV):“Tools“→ “Runtime Object“视图(如果使用 RTOS 组件)
    • 编译器运行时检查: Project→Properties→C/C++ Build→Settings→TI Compiler→Advanced Options

    以下几个问题可帮助我进一步帮助您:

    1. 您是否能够在 CCS 12.4.0 安装中找到这些工具中的任何一个?
    2. 您是否考虑更新到最新的 CCS 版本、其中可能改进了内存调试功能?
    3. 您的 AUTOSAR OS 是否基于 TI-RTOS 组件构建? (这将解锁 HeapTrack 等其他调试功能)
    4. 您最关心的是哪些特定内存问题? (例如,内存泄漏,缓冲区溢出,堆栈溢出,空闲后使用)

    如果您仍然难以找到这些特性、或者想探索适用于您的特定用例的替代方法、请告知我。 如果有助于浏览 CCS 界面、我也很乐意安排屏幕共享会话。

    期待收到您的回复!

    此致、

    Zackary Fleenor