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.

[参考译文] CCS / TDA4VM:为什么可以#39;t I 调试内核

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/952259/ccs-tda4vm-why-can-t-i-debug-the-kernel

器件型号:TDA4VM

工具/软件:Code Composer Studio

我发现我无法在源代码和调试中添加断点。

我执行了以下操作:
a)添加到内核配置选项:CONFIG_DEBUG_INFO
b)编译内核并生成 vmlinux
3)将映像复制到 SD 卡以在 uBoot 的命令行中开始和停止

4)将 CCS 连接到 A72内核并加载符号

5)由于我在源代码中加入了 while (1)循环、它将在这里停止、但找不到源代码。所以  我尝试在源代码中添加断点(似乎不起作用)、 并将 PC 更改为0xFFFFFF8 00010DF3C6C、按 F5、内核可进行单步调试、 但仍然找不到源代码。

6)最后、我按下 F8、内核自行启动。

由于在添加 CONFIG_DEBUG_INFO 之前,我的 vmlinux 只有20M,因此在添加之后它已经超过200m,因此我认为我的 vmlinux 应该包含调试信息,但我看不到问题的位置。 可以帮助我解决这个问题吗?

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

    我使用的是 PSDKLA_V7.0.0,CCS V10.0

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

    您好!

    非常感谢您提供的所有详细信息。 您能否共享您在 while (1)添加的补丁、以便我可以共享
    尝试准确复制您的设置并尝试重现问题?

    此致、
    基尔西

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

    Board-support/linux-5.4.40+gitAUTOINC+66cf445b76-g66cf445b76/init/main.c  第590行

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

    您好!

    谢谢! 我没有添加任何 while 循环或启用 DEBUG_INFO 配置、但我只是从加载了符号
    vmlinux。 我能够看到符号并能够对断点进行编程。


    此致、
    基尔西

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

    您好!

    您的调试方法是可行的、我已经尝试过它。

    虽然我能够看到符号并能够对断点进行编程、但 由于无法识别源代码、因此调试起来非常不方便。

    因此 ,我启用了 debug_info config、编译的内核,并从 vmlinux 加载了符号。

    当我尝试使用 F5调试一个步骤时、CCS 始终提示在地址处中断、但没有可用的调试信息。因此 我仍然无法方便地调试源代码。

    我使用 readelf 检查 vmlinux ,但我没有找到 debug_info 或 debug_line 关键字:

    我的问题是 为什么在启用 debug_info config 后无法找到源代码。如何使用调试信息生成正确的 vmlinux

    例如:

    因为我只是想测试内核程序是否按照我的想法运行、所以我决定在开始时使用 while (1)停止内核、以便我可以逐步调试它。但不幸的是、它没有显示源代码
    我可以通过使用 make vision_apps profile=debug 来正常调试 c66x 固件。当我加载符号时、可以 自动查找源代码。

    此致、
    Hao Luo

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

    您好、Hao Luo、

    我自己尝试启用 DEBUG_INFO 并检查我没有源代码级别
    调试功能。 我看到函数名称、但指令都在汇编语言中。

    未显示 C 代码。 我将向您进一步调查。

    此致、
    基尔西

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

    您好、Hao Luo、

    我能够使用 Lauterbach/trace32调试器进行源代码级调试。 仅供您参考。 我相信这正是你的意图
    要使用 CCS、请执行以下操作:



    我将在 CCS 上与团队进行内部核实。

    您有 Lauterbach/trace32吗?

    此致、
    基尔西

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

    抱歉、我没有 Lauterbach / trace32。

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

    您好、 Hao Luo、

    在 CCS 中加载 vmlinux 后。 您需要找到源代码路径:

    例如、请参阅以下内容:

    点击 Locate file、然后指向该文件的正确源代码路径。 CCS 将开始向您显示源代码。 这是在 CCS 上使用的方法。

    此致、
    基尔西