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.

[参考译文] CCSTUDIO:在 CCS 中调试服务器自动化

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588038/ccstudio-debug-server-automation-in-ccs

部件号: CCSTUDIO

您好、  

我有一个 C28x MCU 的自管理 makefile 工程、我将尝试在 CCS 20.3.1 中简化调试过程。

目前、为了运行调试会话、我需要执行以下步骤:

  1. 通过 CLI 上的 makefile(或通过 tasks.json 中定义的任务)构建和加载应用程序
  2. 打开调试面板
  3. 导入工程的目标配置文件(一次性)。
  4. 启动一个较少的工程调试会话(这会在 tasks.json 中加载)。
  5. 将调试器连接到目标。
  6. 从我的*。out 文件加载符号
  7. 将断点设置为`main ()`
  8. 运行目标。

我希望自动执行步骤 4 到 8、这样调试对我和我的团队来说就不会太麻烦了。 此外,我们真的想让它成为一个可移植的解决方案,既可以在存储库中管理,也可以通过配置文件轻松复制(粘贴在我们的 Wiki 或类似文件中)。

 

到目前为止、我已经尝试过几件事、以及关于每件事的问题:

在`launch.json` file 中定义会话。

根据此页面中的信息: https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html

我创建了如下所示的启动配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug myProject",
            "type": "ccs-debug",
            "request": "launch",
            "targetConfig": "/path/to/project/target_configs/bh560v2.ccxml",
            "connections": [
              {
                "name": "Blackhawk XDS560v2-USB System Trace Emulator IcePick_C_0",
                "cores": [
                  {
                    "name": "C28xx_CPU1",
                    "program": "/path/to/project/build/out/myProject.out",
                    "autoConnect": true,
                    "loadSymbolsOnly": true
                  }
                ]
              }
            ]
        }
    ]
}

但是、运行此启动程序似乎只能完成上述步骤 4、而不是完成步骤 4-6。 运行时、我仍然必须连接目标并加载符号文件、然后才能设置断点并开始运行应用。

 

这里是否遗漏了一些东西、或者这种技术上是否可行?

脚本控制台

这似乎是有希望的、而且即将成为一个全面的解决办法、其中有几个问题:

  1. 直接在 CCS 中使用脚本控制台意味着您仍需要以 ORDEER 方式执行命令来启动调试会话。 这样做很快就会变得麻烦。
  2. 使用文件加载选项更好、但仍然需要您手动选择要运行的.js 文件、然后确保包括导航到工程根目录的命令、因为 CWD 位于`consoleMain.js`位置。

使用这种方法是否有办法使用初始化脚本自动调用脚本控制台、类似于.gdbinit 或.bashrc 文件的方式? 或者、可以在 tasks.json 或 launch.json 中将其作为操作来调用?

通过 CLI 编写脚本命令

与上述内容类似、看起来我们可以使用提供的 run.bat/sh 运行自定义脚本。 然后、我们好像可以使用`D .launchCCS ()`打开图形调试会话。 这似乎效果很好、可以将整个内容打包成脚本或作为 makefile 中的目标。 但最大的问题是如果 CCS 已打开、则会失败。 具体来说、错误是由于两个 CCS 实例打开了相同的“工作区“或文件夹所致。 由于我们可能已经打开了 CCS 以在打开调试会话之前查看源代码、因此我们需要在执行该操作之前关闭窗口... 不理想。

在我看来、`launchCCS ()`函数缺少一个选项是附加到已经存在的 CCS 过程。 这是存在的东西还是可能以其他方式得到这种行为? 或者、您是否可以深入了解如何控制以这种方式启动 CCS 时打开的文件夹?

 

谢谢!

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

    您好:

    我假设目标是在 IDE 中自动启动调试会话、以便设置环境来手动调试在 CCS IDE 外部创建的输出文件。

    [报价 userid=“650031" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1588038/ccstudio-debug-server-automation-in-ccs
    1. 启动一个较少的工程调试会话(这会在 tasks.json 中加载)。
    2. 将调试器连接到目标。
    3. 从我的*。out 文件加载符号
    4. 将断点设置为`main ()`
    5. 运行目标。

    我希望自动执行步骤 4 到 8、这样调试对我和我的团队来说就不会太麻烦了。

    [/报价]

    我建议使用与调试启动关联的初始化脚本:

    https://software-dl.ti.com/ccs/esd/documents/users_guide_ccs/ccs_debug-main.html#initialization-scripts

    因此、您可以为目标配置执行启动配置、然后使用 CCS Scripting 在引用的初始化脚本中自动执行所有所需的操作。

    谢谢

    Ki

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

    尊敬的 Ki:

    感谢您的答复。 是的、我正在寻找一种从非 CCS 工程自动执行调试会话的方法。

    您提供的解决方案看起来应该可以解决问题、但我在运行初始化脚本时遇到了一些问题。

    launch.json 文件

    {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      "version": "0.2.0",
      "configurations": [
        {
          "name": "bh560v2.ccxml",
          "type": "ccs-debug",
          "request": "launch",
          "targetConfig": "${workspaceFolder}/target_configs/bh560v2.ccxml",
          "initialihttps://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588038/ccstudio-debug-server-automation-in-ccs/6119110#zationScript": "${workspaceFolder}/target_configs/debug_init.mjs"
        }
      ]
    }

    然后是初始化脚本

    // Initialize scripting
    const ds = initScripting();
    
    // Open our session
    const session = ds.openSession(/CPU1/);
    
    // Connect to our target
    session.target.connect();
    
    // Run
    session.target.run();
    

    运行此启动配置时、调试会话会启动、但目标未连接。 是否有办法对此进行调试?

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

    看起来您在第 11 行的 launch.json 文件中复制并粘贴了拼写错误。 但我知道您在努力做什么。

    是否有办法对此进行调试?

    尝试从 Scripting Console 运行初始化脚本。 很少从 json 文件中删除第 11 行(以及第 10 行的尾部逗号)。 然后将 init scipt 的第 2 行注释掉、然后在第 2 行之后添加一个 ds.config 调用、该调用将完整路径传递到 json 脚本中使用的 ccxml 文件。 在脚本控制台中加载 js 脚本、然后查看它是否成功运行。

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

    我似乎遇到的问题是未调用初始化脚本。 我尝试在初始化脚本的开头添加一些写入文件的代码、但在运行我的启动配置时未写入该文件。 当我手动将这位代码复制/粘贴到脚本控制台中时、它会运行(并且我的文件已创建)、因此我非常肯定的是、问题不是代码

    同样、我的 launch.json(注意:我已经使用绝对路径进行了尝试,行为没有变化)。

    {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      "version": "0.2.0",
      "configurations": [
            {
            "name": "bh560v2.ccxml",
            "type": "ccs-debug",
            "request": "launch",
            "targetConfig": "${workspaceFolder}/target_configs/bh560v2.ccxml",
            "initializationScript": "${workspaceFolder}/target_configs/debug_init.mjs"
            }
      ]
    }

    然后是更新后的 debug_init.mjs

    // Initialization Script
    
    // File Writer to show signs of life
    const fs = require('node:fs');
    
    const content = 'Hello world';
    
    fs.writeFile('/absolute/path/to/my/file/test.txt', content, err => {
      if (err) {
        console.error(err);
      } else {
        // file written successfully
      }
    });
    
    
    // Start Debug Server Scripting
    const ds = initScripting();
    
    // Open our session
    const session = ds.openSession(/CPU1/);
    
    // Connect to our target
    session.target.connect();
    
    // Run to main()
    session.target.run();

    我不太确定这里可能出现什么问题、因为看起来我正在关注文档中的所有内容。 是否可能存在我丢失的隐藏设置?

    关于您的第二个备注:

    从 json 文件中删除第 11 行(第 10 行的末尾逗号)。 然后将 init scipt 的第 2 行注释掉、然后在第 2 行之后添加一个 ds.config 调用、该调用将完整路径传递到 json 脚本中使用的 ccxml 文件。

    这似乎不可能。 当尝试从 Debug Panel 运行不包含 targetConfig 密钥的启动配置时、我收到此错误。

    编辑: 以防它出现。 我的硬件设置是:Blackhawk USB560v2 系统跟踪+ TMS320F2837xD C2000 DSP

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

    如果您将.MJs 扩展名重命名为.js 并使用该扩展名、它是否起作用?

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

    她似乎想了想,却又不敢说下去。

    谢谢!

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

    很棒!  

    我已经进行了工程检查、看起来 CCS 只是明确查找*。js 文件。 他们也在研究是否允许*。MJs 文件。