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 Theia 没有在调试启动时在 main 显示 HOLD

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1270435/ccs-theia-does-not-show-holding-at-main-on-debug-start

主题中讨论的其他器件:MSPM0G3507

Theia 奇怪的问题

我有一个包含由 main 调用的函数的程序。

如果添加该函数的注释、则一切都正常:

如果没有为该函数添加注释、Theia 不会显示我保留在 main:

我认为我是这样、因为它显示它暂停了。

(ETA:我有一个时间的魔鬼让两个图像都进入了!)

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

    哦、这位于 MSPM0G3507 Launchpad 上

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    我假设我是这样的,因为它显示它暂停了。

    您是否可以展开呼叫堆栈以确认?

    (ETA:我有一个时间的恶魔获得两个图像!)

    您应该能够将图像从本地 PC 拖放到编辑/回复字段中。 这是您尝试的结果吗?

    如果添加该函数的注释、则一切都正常:

    如果没有为该函数添加注释、Theia 不会显示我保留在 main:

    [/报价]

    什么是函数(我在屏幕截图中没有看到它)? 您能提供一个小型测试用例吗?

    谢谢

    小  

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

    "您应该能够将图像从本地 PC 拖放到编辑/回复字段中。 "那你打算怎么办?"

    我终于做到了这一点,起初我使用的是"插入图像"对话框,它不断地用以前的图像替换图像。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我终于做到了这一点,首先我使用的是"插入图像"对话框,它一直在用以前的图像替换图像。

    这实际上是我通常这样做的。 但对于多个图像、您必须一次执行一个操作。 如果您在点击"确定"之前再次按上载、它只会替换图像。

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

    下面是调用堆栈:

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

    我不能做一个小的测试用例,每次我做,它使问题消失。 我可以压缩并发布该项目。

    FWiw、这里的函数是:

    void DoKey(int key) {
        
      uint32_t keystate;
      uint32_t notkeystate;
    
      // Note Pressed/Released only changes *after* the debounce period
      // Now that the serial commands are out of the way, check the keys
    
      // Check one key at a time
      // First turn "on" the column
      DL_GPIO_clearPins(GPIO_KEYBOARD_PORT, KeyStuff[key].col);
    
      keystate = DL_GPIO_readPins(GPIO_KEYBOARD_PORT, KeyStuff[key].row);
      notkeystate = !keystate;
    
      if (KeyStuff[key].debounce == 0) {
        // We are idle, did we get a change of state?
        if (KeyStuff[key].pressed == RELEASED) {
          // Currently not pressed
          if (!keystate) {
            // We are pressed
            KeyStuff[key].debounce = GetMillis();
          }
        } else {
          // Currently pressed
          if (keystate) {
            // We are released
            KeyStuff[key].debounce = GetMillis();
          }
        }
      } else {
        // In a debounce period
        if ((GetMillis() - KeyStuff[key].debounce) > BOUNCE_TICKS) {
          KeyStuff[key].debounce = 0;
    
          if (!keystate) {
            // We are Pressed
            KeyStuff[key].pressed = PRESSED;
    
            switch (key) {
    
            case 0: // Up Fast
              if (EchoState == true) {
                StartSerialTX("key0 Pressed\r\n");
              }
              // SetSpeed(FASTSPEED);
              // Direction(UPDIR);
              // GoForever();
              break;
    
            case 1: // Goto Mark
              if (EchoState == true) {
                StartSerialTX("key1 Pressed\r\n");
              }
              // SetSpeed(FASTSPEED);
              // GoPosition(Mark[CurrentMark]);
              // DisplayPos();
              break;
    
            case 2: // Down Fast
              if (EchoState == true) {
                StartSerialTX("key2 Pressed\r\n");
              }
              // SetSpeed(FASTSPEED);
              // Direction(DWNDIR);
              // GoForever();
              break;
    
            case 3: // Up Slow
              if (EchoState == true) {
                StartSerialTX("key3 Pressed\r\n");
              }
              // SetSpeed(SLOWSPEED);
              // Direction(UPDIR);
              // GoForever();
              break;
    
            case 4: // Change current mark
              if (EchoState == true) {
                StartSerialTX("key4 Pressed\r\n");
              }
    
              // CurrentMark++;
              // CurrentMark = (CurrentMark > 2) ? (0) : (CurrentMark);
              // DisplayMark();
              break;
    
            case 5: // Down Slow
              if (EchoState == true) {
                StartSerialTX("key5 Pressed\r\n");
              }
              // SetSpeed(SLOWSPEED);
              // Direction(DWNDIR);
              // GoForever();
              break;
    
            case 6: // Goto zero
              if (EchoState == true) {
                StartSerialTX("key6 Pressed\r\n");
              }
              // SetSpeed(FASTSPEED);
              // GoPosition(0);
              // DisplayPos();
              break;
    
            case 7: // Set Current Mark
              if (EchoState == true) {
                StartSerialTX("key7 Pressed\r\n");
              }
    
              // Mark[CurrentMark] = GetPosition();
              // DisplayMark();
    
              break;
    
            case 8: // Set Zero
              if (EchoState == true) {
                StartSerialTX("key8 Pressed\r\n");
              }
              // Zero();
              // DisplayPos();
              break;
            }
          } else {
            // We are released
            KeyStuff[key].pressed = RELEASED;
    
            // On release
            switch (key) {
    
            case 0: // Up Fast
              if (EchoState == true) {
                StartSerialTX("key0 Released\r\n");
              }
              // Stop();
              // DisplayPos();
              break;
    
            case 1: // Goto Mark
              if (EchoState == true) {
                StartSerialTX("key1 Released\r\n");
              }
              break;
    
            case 2: // Down Fast
              if (EchoState == true) {
                StartSerialTX("key2 Released\r\n");
              }
              // Stop();
              // DisplayPos();
              break;
    
            case 3: // Up Slow
              if (EchoState == true) {
                StartSerialTX("key3 Released\r\n");
              }
              // Stop();
              // DisplayPos();
              break;
    
            case 4: // Change Mark
              if (EchoState == true) {
                StartSerialTX("key4 Released\r\n");
              }
              break;
    
            case 5: // Down Slow
              if (EchoState == true) {
                StartSerialTX("key5 Released\r\n");
              }
              // Stop();
              // DisplayPos();
              break;
    
            case 6: // Goto Zero
              if (EchoState == true) {
                StartSerialTX("key6 Released\r\n");
              }
              break;
    
            case 7: // Set Mark
              if (EchoState == true) {
                StartSerialTX("key7 Released\r\n");
              }
              break;
    
            case 8: // Set Zero
              if (EchoState == true) {
                StartSerialTX("key8 Released\r\n");
              }
              break;
    
            } // case
          }   // if
        }     // if
      }       // if keybounce = 0
    
      DL_GPIO_setPins(GPIO_KEYBOARD_PORT, KeyStuff[key].col);
      
    }

    如果我删除正文或注释掉、问题就会消失。

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

    如果您能提供该项目的 zip 文件、那 很好。 如果您愿意、可以通过专有 E2E 消息发送、

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

    Keith 好、我不想打断 Ki 的调试讨论、但您可能会发现下面的常见问题解答很有用- Jim

    [常见问题解答]在帖子中插入屏幕片段或图像的简单方法

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

    谢谢。

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

    由 PM 发送

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

    谢谢、让我们继续讨论。

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

    对于线程之后的那些、确定了根本原因是由编译器生成的 DWARF 调试符号。  似乎 多个源代码行映射到同一地址。 看起来 编译器/链接器针对未包含在最终.text 段中的函数包含了错误的源代码行映射。 编译器的错误已归档。