I have a targeted build that is not allowing breakpoints, but instead provides a white circle with a "?" overlaying it. Selected breakpoint is useless. right clicking on the "?" provides no answers.
Hi EdmundMy name is Stephen and I work at Arm.The breakpoint with a white circle and a question mark means that you've tried to place a breakpoint at an address or on a line of code in a file, but the debugger has no debug information for that address/file.This is easily done accidentally if you have several projects open in your workspace, and you set a breakpoint e.g. on main() in main.c of the wrong project.In the screenshot below, the debugger is connected to a target using project1.axf. I intended to set a breakpoint on main() for project1, but "accidentally" set it on main() for project2 instead.The Commands view reports: "No compilation unit matching main.c was found"In this case, the debugger actually sets a "pending breakpoint". This can also happen during normal operation, e.g. where you want to set a breakpoint on a shared library in e.g. a Linux system, but the shared library has not yet been loaded by the kernel. When the kernel eventually loads the library, the debugger will then load the debug information for the library and activate the breakpoint.To try to resolve your issue, as a starting point I suggest you disconnect from the target, close all the open editor views on source files, delete all breakpoints, then reconnect afresh.Hope this helpsStephen
How do I delete all breakpoints, I cannot seem to find that operation in any menu?
There is a 'delete all' button in the Breakpoints view (use Windows > Show View, or the + button to add tabs, if that view is not open).
Alternatively enter "delete breakpoints" on the Commands view.
Note that you must be connected to the debug session to use the commands view.
I cleared all breakpoints in target, plus cleared all break points in all other targets as well and still I cannot implement a breakpoint in my target.
Is there underlying code for that source? It may be optimized away.Look at the disassembly view - can a breakpoint be set there?
I suspect that .c file (in which you are trying to set a breakpoint) isn't referenced from the debug information for the current image.Try closing all the open editor views, then disconnect and reconnect the target. The correct .c file should then open. You might need to set a source path substitution if the source files were on another machine when the image was built.If you are still unable to set a breakpoint, then check whether any debug information is being loaded by the debugger. Look in the Commands view. Is the image being debugged running in Flash? If so, you may need to load debug information explicitly with an "add-symbol-file" command.Hope this helps
I did close and reopen the editor multiple times, and still cannot set a breakpoint on the top level "int main()" Level, but if I enter into a sub-function in a different .c file, I can set a breakpoint. I just cannot set one in the top level main(), and cannot set any breakpoint anywhere in that .c file, How do I disconnect and reconnect the target?
What ELx level are you at when you reach main?
The different ELx levels are different memory spaces, and so you may need to load symbols to that level. This is most easily done on the command line (or by manually adding the commands to the debug configuration)
add-symbol-file image.axf EL1N:0 add-symbol-file image.axf EL1S:0
Also, ensure that the main() source file has been compiled with debug enabled (-g).
is the image.axf the actual file name, or do I need to fill in that file name? If I can figure out what it is?
How do I access the Debug Configuration?
And how do I compile main() source file with debug enabled (-g)?
"image.axf" is a placeholder for the real name of your executable ELF image. I can't tell from your screenshots what the name of your executable is, but it might have IMX93 in its name? You should be able to see its name in the Project Explorer view, or in the IMX93_FlexSPI_emw launch Debug Configuration.To access the Debug Configurations, use Run > Debug Configurations. Expand Generic Arm C/C++ Application, then select your Debug Configuration. Look in the Files tab for the executable ELF image name.
To ensure that your project is compiled with debug enabled (-g), Right-Mouse-Click on your project, then select Properties. Expand C/C++ Build > Settings. In the Tool Settings tab, select All Tools Settinngs > Debugging. Ensure "Standard (-g)" is selected:
Stephen
This is the response back after entering the first line:
F:\try_env\src\tests\D_IP_FLEXSPI_SYN>add-symbol-file ap_d_ip_FlexSPI_emw_2023_07_19.axf EL1N:0
'add-symbol-file' is not recognized as an internal or external command,
operable program or batch file.
HiThe "add-symbol-file" command can be entered in the Command field of the Commands view:The "add-symbol-file" command can also be invoked automatically on connection. This is done from the Debugger tab in the Debug Configuration dialog. For an example of this, please see the ready-made example "startup_Cortex-A55_Cortex-A76", and its debug configuration "startup_Cortex-A55x1.launch". You can import examples as follows:1. Select File > Import... to open the Import Selection dialog.2. Expand the Arm Development Studio group and select Examples and Programming Libraries.3. Click Next to open the Import Development Studio Examples and Programming Libraries dialog.4. Either expand the Examples group to view the example categories, or enter the example name in the filter.5. Click Finish to import the selected examples into your workspace.Stephen
This was the response when I entered it from the command line:
Execution stopped in EL3h mode at EL3:0x00000000204A63C4EL3:0x00000000204A63C4 118,17 flexspi_mcr0 = ®32(FLEXSPI_OTFAD1_IPS_BASE_ADDR);add-symbol-file ap_d_ip_FlexSPI_emw_2023_07_19 EL1N:0ERROR(CMD685-CMD19): ! Failed to load symbols for "ap_d_ip_FlexSPI_emw_2023_07_19"! Image "C:\Users\nxf71684\Development Studio Workspace\ap_d_ip_FlexSPI_emw_2023_07_19" does not existadd-symbol-file ap_d_ip_FlexSPI_emw_2023_07_19 EL1N:0ERROR(CMD685-CMD19): ! Failed to load symbols for "ap_d_ip_FlexSPI_emw_2023_07_19"! Image "C:\Users\nxf71684\Development Studio Workspace\ap_d_ip_FlexSPI_emw_2023_07_19" does not existadd-symbol-file ap_d_ip_FlexSPI_emw_2023_07_19 EL1S:0ERROR(CMD685-CMD19): ! Failed to load symbols for "ap_d_ip_FlexSPI_emw_2023_07_19"! Image "C:\Users\nxf71684\Development Studio Workspace\ap_d_ip_FlexSPI_emw_2023_07_19" does not exist
The error message is that you are attempting to load symbols from an image that does not exist.
add-symbol-file ap_d_ip_FlexSPI_emw_2023_07_19 EL1N:0ERROR(CMD685-CMD19):! Failed to load symbols for "ap_d_ip_FlexSPI_emw_2023_07_19"! Image "C:\Users\nxf71684\Development Studio Workspace\ap_d_ip_FlexSPI_emw_2023_07_19" does not exist
You can specify the file from the GUI. When connected to the target, select Load.. from the Debug Connections pane menu:
Then select Add Symbol File, browse your File System for the image, and enter EL1N:0 as the Load offset.
The command to replicate this will also be echoed in the command and history panes.