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-C2000: Continuous Update of Expression Window Gives "Identifier Not Found" Error Only After Right-Clicking on an Expression, But Works Properly Otherwise

Part Number: CCSTUDIO-C2000
Other Parts Discussed in Thread: LAUNCHXL-F280049C, C2000WARE, CONTROLSUITE

I am trying to graph the value of a "watch" expression, but when I right-click on the expression to create a graph the Type/Value/Address fields for all of the expressions change to "unknown", "Identifier not found: XXXXXXX" and the address goes blank and no graph is created when I select "Graph" from the context menu. (I cannot create a Graph through Tools->Graph either, and there are no collapsed window groups.) Otherwise, the data for all of the expressions are shown correctly, and the Value fields will be updated while the code runs, as shown below.

"Identifier Not Found" when pulling up the context menu:

Works fine otherwise:



Additionally, if I leave the context menu from right-clicking on an expression open, I can see that the Type/Value/Address fields occasionally flash the correct values, then go back to "unknown", "Identifier not found: XXXXXXX" and a blank address. I've also noticed that if I scroll through code in the editor pane while the debugger is running that the Type/Value/Address fields will briefly flash to "unknown", "Identifier not found: XXXXXXX" and a blank address fields and then back to the correct values. Other interactions with the CCS GUI also result in the "Identifier not found" error in the expression window.

I am using a LAUNCHXL-F280049C evaluation kit, connected to my laptop with the built-in USB XDS100 probe. I am running Code Composer Studio Version: 11.0.0.00012, OS: Windows 10, v.10.0, x86_64 / win32, Java version: 11.0.11, with ControlSUITE (v3.4.9) and C2000Ware (C2000Ware_3_04_00_00) installed. This is a simple project to familiarize myself with the TI toolchain and C2000 micrcontrollers - the code reads data from the sensors on a BOOSTXL-SENSORS booster pack (this is currently performed using polling only - no interrupts are enabled) and scales the data correctly so it can be graphed in CCS. I have a software breakpoint set to action "Update View/Expression" in the loop that reads the sensor data, and an expression for each of the three variables in which the sensor data is stored. The variables are declared and initialized in main() as "volatile float" to prevent the linker from optimizing them out - the software breakpoint is also located in main(). I've tried turning off code optimization entirely in the compiler options to see if that helped - it did not.

The project options are set nearly as described in the F28004x Firmware Development Package User Guide, except that I've turned off support for CIO through the debug probe, and printf support is set to "minimal". I did tweak the project's local copy of the "28004x_generic_ram_lnk.cmd" in order to get the linker to successfully place.

This was all working well enough until yesterday (I was able to create graphs, and received no "Identifier not found" errors) but now I'm getting this unexpected behavior. I don't believe I've made any notable changes to the project options or the code, and the hardware and software set up have not changed either. Clearly something has changed between then and now, but I am at a loss as to what that might have been - I've already gone over everything I can think of.

Any help would be greatly appreciated!

  • Hello,

    I can reproduce the issue you are seeing. However there are several things going on that need to be explained.

    I have a software breakpoint set to action "Update View/Expression" in the loop that reads the sensor data, and an expression for each of the three variables in which the sensor data is stored

    Note the your device has real-time mode support. Hence you can just enable "continuous refresh" on views to have it refresh at a desired interval. This is usually preferred than setting a breakpoint to refresh views since the intrusive nature of that action could impact real-time performance of the running application. However, only global variables can be refreshed and displayed when the target is running. Hence I assume this is why you are using breakpoints to refresh views instead since the variables you are interested in viewing appear to be local variables. With that said, there are some considerations when access variables while the target is running in such a scenario:

    I am trying to graph the value of a "watch" expression, but when I right-click on the expression to create a graph the Type/Value/Address fields for all of the expressions change to "unknown", "Identifier not found: XXXXXXX" and the address goes blank and no graph is created when I select "Graph" from the context menu. (I cannot create a Graph through Tools->Graph either, and there are no collapsed window groups.) Otherwise, the data for all of the expressions are shown correctly, and the Value fields will be updated while the code runs, as shown below.

    The expressions view has continuous refresh disabled and hence it is only getting updated when the breakpoint is hit and views are refresh. But when right-clicking on a local variable and opening the context menu to select the graph option, the debugger is likely trying to access the variable and if the target is in a running state, it will not be able to get the value of the local variable, hence the "identified not found" error.

    Additionally, if I leave the context menu from right-clicking on an expression open, I can see that the Type/Value/Address fields occasionally flash the correct values, then go back to "unknown", "Identifier not found: XXXXXXX" and a blank address. I've also noticed that if I scroll through code in the editor pane while the debugger is running that the Type/Value/Address fields will briefly flash to "unknown", "Identifier not found: XXXXXXX" and a blank address fields and then back to the correct values. Other interactions with the CCS GUI also result in the "Identifier not found" error in the expression window.

    This toggle is likely happening because the when the target is running, the context menu action will have the debugger attempt to evaluate the local variable and since the debugger is unable to access the local variable in real-time - the "identified not found" error. But then eventually the breakpoint is hit and the views refreshed. When this action occurs, you will see the expressions view update the local variable and display it correctly. Then when the target execution is auto resumed, the debugger will be unable to display the variable again and hence the "identifier not found" issue appears. And this repeat and the breakpoint is hit again and target auto-resumes again.

    To avoid the issues seen with local variables, I suggest trying to configure a graph when the target is halted. This should avoid the issues you are experiencing.

    Hope this helps

    ki