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.

[参考译文] 从断点跳转到错误的位置

Guru**** 2563960 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1201650/jumping-to-wrong-place-from-breakpoint

您好!

我正在尝试调试 USB 应用程序、当我设置一个断点时、我向后跳至固件应用程序中的不正确行。  有人知道为什么会发生这种情况吗?  在断点使用"步入"或"步越"时、我会看到零星的行为(跳到看起来像随机位置的地方)。  所附的屏幕截图中提供了一个示例。  我尝试"单步执行"函数调用"USBDBulkInit"、但相反、如箭头所示向后跳转至"USBStackModeSet"。  如果我继续单击"跳转至"、我最终进入设置了断点的函数调用、但在该调用中、我只经历了更零星的行为。

非常感谢任何帮助。   

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

    您好!

    Unknown 说:
    有人知道为什么会发生这种情况吗?

    最常见的原因是您正在尝试调试优化的代码。

    有关更多详细信息、请参阅以下文章:

    https://dev.ti.com/tirex/explore/node?node=A__AEm7LJjS34iFPa5fpT7ttQ__ccs_devtools__FUz-xrs__LATEST

    谢谢

    小标题

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

    这听起来很合理、但有两个简短的问题。

    1.我正在使用 USB 驱动程序库、我注意到当我更改 USB 代码的根 TIvaware 驱动程序库文件夹中的源代码时、所做的更改不会生效。  我假设这是因为代码未编译但链接进来、因为我可以复制并粘贴所需的库文件、在我的 main.c 中更改 include 语句、然后用修改内容重新编译、这样就可以看到。  所以-这是一个问题吗?  我可以删除"my"源代码的所有优化、但无法删除 TIvaware USB 驱动程序库的所有优化。

    2.我需要自行重新编译 USB 驱动程序库以删除编译期间可能进行过的任何优化、还是 CCS 应该每次在我缺少某些内容时都重新编译 TIvaware USB 驱动程序库?

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

    如果您尝试从链接到您的主应用程序的库单步执行代码、则需要在禁用优化的情况下重新构建库、以获得完整的调试可见性。

    除非将 USB 驱动程序库作为相关工程添加、否则 CCS 不会重新编译该库。 即使这样、应用于主工程的任何编译设置无论如何都不会传播到相关工程。

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

    Ki、您好!

    感谢您的回答、您似乎是正确的。  在处理此项目时、我已重新编译 usblib 项目、并将对其进行测试、以查看我是否可以立即单步调试具有优化功能的代码。  但是、我确实注意到了一些导致我们快速提出几个问题的东西。

    1.当我关闭优化器后打开 usblib 项目以重新编译时、我注意到在器件文件夹中无法看到头文件。  这是预期结果吗?  当它"包含"到我的自定义项目中、我转到"包含"文件夹并在 CCS 项目导航器中浏览到该 USB 器件文件夹时、我可以看到头文件。

    2.开发/调试优化代码的典型方法是什么?  我还没有做很多这方面的工作、但我想很多固件工程师必须进行一定程度的优化-他们在这种情况下如何进行调试?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 当我在关闭优化后打开 usblib 项目以重新编译时、我注意到在器件文件夹中无法看到头文件。  这是预期结果吗?  当它"包含"到我的自定义项目中、我转到"包含"文件夹并在 CCS 项目导航器中浏览到该 USB 器件文件夹时、我可以看到头文件。

    我假设您在引用 TivaWare 中的 usblib。 Project Explorer 中的"Includes"文件夹应显示工程构建设置中的所有包含搜索路径。 如果您展开文件夹、它将列出该文件夹的所有内容。 以下是预期行为。

    2. 开发/调试代码的典型优化方法是什么?  我还没有完成很多工作、但我想很多固件工程师必须进行一定程度的优化-他们在这种情况下如何进行调试?

    这实际上在我前面提到的文章"做什么"中讨论过。

    https://dev.ti.com/tirex/explore/node?node=A__AEm7LJjS34iFPa5fpT7ttQ__ccs_devtools__FUz-xrs__LATEST

    谢谢

    小标题

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

    感谢您的重新链接。  这篇文章很棒、我将回顾该知识库中的其他一些内容。  非常有帮助!

    我的第一个问题主要是问:为什么我的 USB 器件测试项目(正常的 TM4C 项目)显示头文件而 usblib (您是正确的-来自 Tivaware)仅显示.c 文件?  请参阅下面的屏幕截图。  我发现当您导入 Tivaware usblib 等库时、我缺少一些内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的第一个问题其实只是问为什么我的 USB 设备测试项目(正常的 TM4C 项目)显示头文件而 usblib (您是正确的-来自 Tivaware)仅显示.c 文件?  [/报价]

    因为在您的 第一个屏幕截图中,Includes 文件夹显示目录中所有文件的内容。

    在第二个屏幕截图中、您不是查看 Includes 文件夹的内部、而是查看 /器件中。 该文件夹为空。 在 Project Explorer 中、您可以看到一组链接文件。 这些文件实际上并不在该文件夹中、而是工程引用了工程文件夹之外的实际位置。

    您可以通过查看文件属性看到、该文件位于根 TivaWare 目录而不是工程文件夹中。

    仅链接*。c 文件、而不是头文件。

    有关链接文件的更多信息、请参阅:

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_project-management.html#adding-or-linking-source-files-to-project

    谢谢

    小标题

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

    编辑:我更改了上面文章中的屏幕截图位置、以使其更清晰

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

    谢谢 Ki!  你是一个巨大的帮助,我现在启动并运行修改 usblib 需要!

    谢谢!