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.
工具/软件:Code Composer Studio
您好,
所以,新安装CCS v 7.4 .0.0.0015万 ,我有一个应用程序,它使用Energia的CC3100 WiFi库作为TM4C1294NCPDT目标。 代码编译和加载正常。 我可以从源窗口在主库中的任何行(例如,WiFi.cpp或WiFiClient.cpp)上设置断点。
应用程序运行正常。 但是,当我尝试在库的'utility'文件夹(例如,在SL_Start()函数中,utility/device.c)中包含的代码上设置断点时,断点被设置为'灰显'。
如果我尝试在“断点”窗口中激活它,我会看到弹出窗口:“No code is associated with "../device.c",line XXX in 'path_here'(没有与"../device.c"关联的代码,路径此处'XXX行)”。
我可以打开反汇编窗口,并且可以在该窗口中看到SL_Start()的代码。 如果启用show source,我可以在'assembly'窗口中成功设置断点。 执行此操作时,'Breakpoints'窗口显示"0x0.5744万 (SL_Start + 0xC)",而不是通常的"device.c,第69行"
为什么会出现这种情况,如何解决? 库*Does*包含混合的C和C++代码,即mind.
提前感谢!
请注意,我在Windows上试用过,也是新安装的CCS 7.4 v.0.0.0015万 ,一切都正常运行。
这是否是索引器问题? 符号映射问题? 我很想了解这是如何和为什么的;当然我没有你们所拥有的深度和广度的知识...
考虑到所有的事情,如果我*不喜欢,我会在窗户里工作,但我不喜欢它! 我不想!
如果您需要我的帮助,请告诉我。
编辑:如何创建可重现的测试案例...? 是否创建具有混合C/C++代码的基本库?
你好,Phil
Phil LaFayette10 说:owever,当我尝试在库的'utility'文件夹(例如,utility/device.c,在SL_Start()函数中)中的代码上设置断点时,断点被设置为'灰显'。
听起来像是调试器无法将源文件与调试符号中的信息正确关联的问题。 您是如何打开device.c文件的? 是编辑器提示您浏览它还是您自己在编辑器中手动打开它? 如果您执行了后者(手动选项),您是通过双击项目资源管理器视图中的文件来打开它,还是执行 了文件->打开文件'或拖放到编辑器?
此外,您是否使用任何特定于文件的选项?
测试案例也很有帮助。 如果您愿意共享可执行文件,请告诉我。
谢谢
KI
Phil LaFayette10 说:但CCS没有要求该项目的其他文件夹'UTILITY'中的*任何*.c文件。
那么文件是如何在编辑器中打开的? 我假设是手动操作,但您采取了哪一步?
[QUETE USER="Phil LaFayette10]I Try this on windows -same CCS version number,Fresh workspace],CCS已提示我找到每个目录中的第一个文件,即:'WiFi'中的第一个引用的.cpp文件和'WiFi/实用程序'中的第一个引用的.c文件。 换言之,它在Windows中工作正常。
再说一次,你们是专家,但对我来说,这表明CCS的Linux版本存在问题。[/QUOT]
在Linux上,它听起来确实很不好。 但我并不知道有任何这类差异。 可能是因为CCS Linux无法正确处理'utility'文件夹中文件符号中的路径。 'utility'文件夹中的文件是否使用与项目其余部分不同的选项进行编译? 您使用的Linux发行套件是什么?
此外,是否可以尝试通过模块视图打开device.c文件?
谢谢
KI
当我尝试在论坛上选择"插入代码,附加文件等..."时,它似乎拒绝发布... 我将首先尝试帖子的文本...
编辑: e2e.ti.com/.../For-TI-E2E.tar.gz
我已附加了整个工作区的.tar.gz。 感兴趣的项目是testcase testcase.cpp文件。
它使用Energia 17内核库,从中提取,我从CCS中简单地制作了一个'New Energia Sketch',将编译器更改为GNU 6.3 v.1 (Linaro),然后重新构建它。
'testcase '使用两个我从Energia分离出来的库;常用WiFi库和一个稍作修改的SPI库(重命名为MHSPI)。
我相信,如果您创建一个全新的工作空间,并执行“导入”>“Code Composer项目”,然后选中“复制到工作空间”附加的项目,它应该会提取几乎所有内容。
我确实有一个工作空间变量设置为'TIVAWARE_ROOT',该变量指向我的'TivaWare_C_Series-TIVAWE.ROOT' 2.1 文件夹。4.178
此外,还提供了自定义编译器,用于'Energia-0101E0017/hardware/lm4f/variants/launchpad_129'和0017和'Energia-0101E0017/hardware/lm4f/cores/lm4f'。0017。
链接程序脚本还显式链接到'Energia-0101E0017/hardware/lm4f/cores/lm4f/lm4fcpp_snowflake.ld'。0017。
要重新创建,请在'testcase.cpp中的第55行设置一个断点,上传/运行。 当遇到断点时,使用F5执行SOURCE-STEP,它会弹出"在"../WiFi.CPP"中找不到源文件"。
浏览到文件,您将处于status()状态。 将源步进保持在init()中,直到调用'shl_Start()'
进入该步骤,您应该位于'device.c'的SL_Start()中。
尝试放置一个断点,我尝试了第102行:'_SlDrvDriverCBInit();'
如果您需要更多信息,请告诉我。
编辑2:根据您的第一个问题,我没有回答:CCS在我找到WiFi.cpp并进入SL_Start()后,刚刚打开了正确的文件'utility/device.c'。
'utility'文件夹中的文件与项目的其余部分完全相同。
我目前使用Ubuntu 16.04 LTS。
我可以通过模块视图打开'evice.c',但它似乎没有任何变化。
Phil,您好!
感谢出色的测试案例。 当我们获得可重现的测试案例时,它总是对我们很有帮助。 我非常感谢您抽出时间来提供此信息。
我可以重现该问题。 我实际上可以在Ubuntu 16.04 计算机和Windows 10计算机上重现该问题
由于某种原因,调试器未正确关联打开的device.c文件。 您可以尝试以下操作吗?
从CCS Edit (CCS编辑)角度打开调试配置对话框(运行->调试配置),然后在左侧面板中选择您正在使用的启动配置。 转至'Source'(源)选项卡,并(通过Add -> File System Directory (添加->文件系统目录)显式添加到 ./for TI E2E/WiFi/调试/实用程序的路径。 请参阅下面的屏幕截图。
清理您可能拥有的任何其他额外路径。
再次尝试测试用例,并告诉我是否可以在device.c中设置断点
谢谢
KI
[报价用户="Ki-Soo Lee"]
感谢出色的测试案例。 当我们获得可重现的测试案例时,它总是对我们很有帮助。 我非常感谢您抽出时间来提供此信息。
[/引述]
当然! 如果我穿你的鞋子,我会想要的。 :)
好的,所以我尝试了两种对你的建议的改变。
首先,我进入了“运行”>“调试配置”>“源”(用于测试用例),并删除了CCS第一次要求我查找源文件时创建的路径“..WiFi.cpp blahblahblah”
然后我尝试添加路径:
"/home/captain/workspaces/tie2e/WiFi/调试/实用程序"
应用更改,然后调试。 首先进入WiFi.STATUS(),CCS弹出“在../WiFi.CPP处找不到源文件”,所以我浏览/选择了它。 已逐步进入"device.c",但仍无法设置断点。
这不是我第一次绕过这个街区,我意识到你的屏幕截图与你引用的路径不同。 (超级普通的监督!)
因此,我返回,清除了非默认路径,并添加了路径:
"/home/captain/workspaces/tie2e/WiFi/实用程序"(无调试/实用程序)
应用更改,调试,并且工作正常!
所以,我们有一个解决方法!
同时,这是否会提供足够的信息,以便在下一个CCS发行版中获得修复?
此外,谢谢!
这不是我第一次绕着街区,我意识到您的屏幕截图与您引用的路径不同。 (超级常见监管!)[/QUOT]
啊...对不起! 感谢您的支持。
Phil LaFayette10 说:同时,这是否会提供足够的信息来解决下一个CCS版本中的问题?
是的,我们当然有一个可靠的测试案例(再次感谢!) 供工程师进一步调查。 希望我们可以在下一个版本中获得此问题的解决方法。
谢谢
KI