Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FreeRTOS Symbols Not Loaded when "loadFiles" and "symbolFiles" are Used #1007

Open
Jake-Carter opened this issue Apr 20, 2024 · 4 comments
Open

Comments

@Jake-Carter
Copy link

First off - thanks for your work on this extension. We use it at ADI for our MSDK, and it's been a much better experience than Microsoft's cpptools.

Describe the bug

For a FreeRTOS project, if a launch profile explicitly specifies the executable and symbol files with "loadFiles"/"symbolFiles" it will fail to find FreeRTOS debug symbols and fail to show a thread-aware call stack. Ex:

"executable": "${workspaceFolder}/build/file.elf",
"loadFiles": ["${workspaceFolder}/build/file.elf"],
"symbolFiles": [{
    "file": "${workspaceFolder}/build/file.elf"
}],

image

When only "executable" is used, then the FreeRTOS symbols are loaded correctly and the call stack becomes thread-aware as expected. Ex:

"executable": "${workspaceFolder}/build/file.elf",
// "loadFiles": ["${workspaceFolder}/build/file.elf"],
// "symbolFiles": [{
//     "file": "${workspaceFolder}/build/file.elf"
// }],

image

Expected behavior

FreeRTOS symbols should be loaded correctly if "loadFiles"/"symbolFiles" are used. We have dual-core microcontrollers with a secondary RISC-V core and we build binaries for each core separately so that the debug symbols can be loaded correctly.

Manually using exec-file/symbol-file on the GDB command-line works (see extra context at bottom), and so does a cpptools debug profile in a similar setup.

Environment (please complete the following information):

  • VS Code v1.88.1
  • Cortex-Debug Version: v1.12.1
  • OS: Linux, (replicated on Windows 10 as well)
  • GDB Version: GNU gdb (GNU Arm Embedded Toolchain 10.3-2021.10) 10.2.90.20210621-git
  • Compiler Toolchain Version: (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)

Please include launch.json

  • Note: We load values from settings.json (see VSCode-Maxim project.

  • For this project, ${config:program_file} and ${config:symbol_file} point to the same file. See here for the full project.
    Failed profile:

        {
            "name": "Debug Arm (Cortex-debug)",
            "cwd":"${workspaceRoot}",
            "executable": "${workspaceFolder}/build/${config:program_file}",
            "loadFiles": ["${workspaceFolder}/build/${config:program_file}"],
            "symbolFiles": [{
                "file": "${workspaceFolder}/build/${config:symbol_file}"
            }],
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "linux": {
                "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
                "serverpath": "${config:OCD_path}/openocd",
            },
            "windows": {
                "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb.exe",
                "serverpath": "${config:OCD_path}/openocd.exe",
            },
            "osx": {
                "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
                "serverpath": "${config:OCD_path}/openocd",
            },
            "searchDir": ["${config:OCD_path}/scripts"],
            "configFiles": ["interface/${config:M4_OCD_interface_file}", "target/${config:M4_OCD_target_file}"],
            "interface": "swd",
            "runToEntryPoint": "main",
            "svdFile": "${config:MAXIM_PATH}/Libraries/CMSIS/Device/Maxim/${config:target}/Include/${config:target}.svd",
            "rtos": "FreeRTOS"
        },

Successful profile:

        {
            "name": "Debug Arm (Cortex-debug)",
            "cwd":"${workspaceRoot}",
            "executable": "${workspaceFolder}/build/${config:program_file}",
            // "loadFiles": ["${workspaceFolder}/build/${config:program_file}"],
            // "symbolFiles": [{
            //     "file": "${workspaceFolder}/build/${config:symbol_file}"
            // }],
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "linux": {
                "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
                "serverpath": "${config:OCD_path}/openocd",
            },
            "windows": {
                "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb.exe",
                "serverpath": "${config:OCD_path}/openocd.exe",
            },
            "osx": {
                "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
                "serverpath": "${config:OCD_path}/openocd",
            },
            "searchDir": ["${config:OCD_path}/scripts"],
            "configFiles": ["interface/${config:M4_OCD_interface_file}", "target/${config:M4_OCD_target_file}"],
            "interface": "swd",
            "runToEntryPoint": "main",
            "svdFile": "${config:MAXIM_PATH}/Libraries/CMSIS/Device/Maxim/${config:target}/Include/${config:target}.svd",
            "rtos": "FreeRTOS"
        },

The XRTOS view works fine in either case, and inspecting the logs this seems to be a bug with how cortex-debug drives GDB when the split options are used.

image

Attach text from Debug Console

Output for failed profile.

Note the "warning: No executable has been specified and target does not support\ndetermining executable automatically. Try using the "file" command." immediately after loading the symbol file between cmd 10/11. Not sure how or why the file info is getting dropped there.

Cortex-Debug: VSCode debugger extension version 1.12.1 git(652d042). Usage info: https://github.com/Marus/cortex-debug#usage
"configuration": {
    "name": "Debug Arm (Cortex-debug)",
    "cwd": "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo",
    "executable": "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf",
    "loadFiles": [
        "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf"
    ],
    "symbolFiles": [
        {
            "file": "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf",
            "sectionMap": {},
            "sections": []
        }
    ],
    "request": "launch",
    "type": "cortex-debug",
    "servertype": "openocd",
    "searchDir": [
        "/home/jhcarter/repos/msdk/Tools/OpenOCD/scripts"
    ],
    "configFiles": [
        "interface/cmsis-dap.cfg",
        "target/max78000.cfg"
    ],
    "interface": "swd",
    "runToEntryPoint": "main",
    "svdFile": "/home/jhcarter/repos/msdk/Libraries/CMSIS/Device/Maxim/MAX78000/Include/MAX78000.svd",
    "showDevDebugOutput": "raw",
    "rtos": "FreeRTOS",
    "__configurationTarget": 6,
    "gdbServerConsolePort": 60001,
    "pvtAvoidPorts": [],
    "gdbPath": "/home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-gdb",
    "serverpath": "/home/jhcarter/repos/msdk/Tools/OpenOCD/openocd",
    "chainedConfigurations": {
        "enabled": false
    },
    "debuggerArgs": [],
    "swoConfig": {
        "enabled": false,
        "decoders": [],
        "cpuFrequency": 0,
        "swoFrequency": 0,
        "source": "probe"
    },
    "rttConfig": {
        "enabled": false,
        "decoders": []
    },
    "graphConfig": [],
    "preLaunchCommands": [],
    "postLaunchCommands": [],
    "preAttachCommands": [],
    "postAttachCommands": [],
    "preRestartCommands": [],
    "postRestartCommands": [],
    "preResetCommands": [],
    "postResetCommands": [],
    "toolchainPrefix": "arm-none-eabi",
    "extensionPath": "/home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1",
    "registerUseNaturalFormat": true,
    "variableUseNaturalFormat": true,
    "pvtVersion": "1.12.1",
    "__sessionId": "1703e806-e6f0-4d20-89b8-119c7e2f042e",
    "pvtShowDevDebugOutput": "raw"
}
Reading symbols from /home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-objdump --syms -C -h -w /home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf
Reading symbols from /home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-nm --defined-only -S -l -C -p /home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf
Launching GDB: /home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-gdb -q --interpreter=mi2
1-gdb-version
Launching gdb-server: /home/jhcarter/repos/msdk/Tools/OpenOCD/openocd -c "gdb_port 50000" -c "tcl_port 50001" -c "telnet_port 50002" -s /home/jhcarter/repos/msdk/Tools/OpenOCD/scripts -f /home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1/support/openocd-helpers.tcl -f interface/cmsis-dap.cfg -f target/max78000.cfg -c "CDRTOSConfigure FreeRTOS"
    Please check TERMINAL tab (gdb-server) for output from /home/jhcarter/repos/msdk/Tools/OpenOCD/openocd
Finished reading symbols from objdump: Time: 17 ms
Finished reading symbols from nm: Time: 21 ms
-> =thread-group-added,id="i1"
-> ~"GNU gdb (GNU Arm Embedded Toolchain 10.3-2021.10) 10.2.90.20210621-git\n"
-> ~"Copyright (C) 2021 Free Software Foundation, Inc.\n"
-> ~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law."
-> ~"\nType \"show copying\" and \"show warranty\" for details.\n"
-> ~"This GDB was configured as \"--host=x86_64-linux-gnu --target=arm-none-eabi\".\n"
-> ~"Type \"show configuration\" for configuration details.\n"
-> ~"For bug reporting instructions, please see:\n"
-> ~"<https://www.gnu.org/software/gdb/bugs/>.\n"
-> ~"Find the GDB manual and other documentation resources online at:\n    <http://www.gnu.org/software/gdb/documentation/>."
-> ~"\n\n"
-> ~"For help, type \"help\".\n"
-> ~"Type \"apropos word\" to search for commands related to \"word\".\n"
-> 1^done
2-gdb-set mi-async on
-> 2^done
3-interpreter-exec console "set print demangle on"
-> 3^done
4-interpreter-exec console "set print asm-demangle on"
-> =cmd-param-changed,param="print asm-demangle",value="on"
-> 4^done
5-enable-pretty-printing
-> 5^done
6-interpreter-exec console "source /home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1/support/gdbsupport.init"
-> 6^done
7-interpreter-exec console "source /home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1/support/gdb-swo.init"
-> =cmd-param-changed,param="language",value="c"
-> =cmd-param-changed,param="language",value="auto"
-> 7^done
8-interpreter-exec console "set output-radix 0xa"
-> ~"Output radix now set to decimal 10, hex a, octal 12.\n"
Output radix now set to decimal 10, hex a, octal 12.
-> 8^done
9-interpreter-exec console "set input-radix 0xa"
-> ~"Input radix now set to decimal 10, hex a, octal 12.\n"
Input radix now set to decimal 10, hex a, octal 12.
-> 9^done
10-interpreter-exec console "add-symbol-file \"/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf\""
-> ~"add symbol table from file \"/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf\"\n"
add symbol table from file "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf"
-> ~"(y or n) [answered Y; input not from terminal]\n"
(y or n) [answered Y; input not from terminal]
-> ~"Reading symbols from /home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf...\n"
Reading symbols from /home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf...
-> 10^done
11-target-select extended-remote localhost:50000
-> =thread-group-started,id="i1",pid="42000"
-> &"warning: No executable has been specified and target does not support\ndetermining executable automatically.  Try using the \"file\" command."
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
-> &"\n"

-> =thread-created,id="1",group-id="i1"
-> ~"0x1000112a in MXC_Delay (us=us@entry=200000) at /home/jhcarter/repos/msdk/Libraries/CMSIS/../PeriphDrivers/Source/SYS/mxc_delay.c:232\n"
0x1000112a in MXC_Delay (us=us@entry=200000) at /home/jhcarter/repos/msdk/Libraries/CMSIS/../PeriphDrivers/Source/SYS/mxc_delay.c:232
-> ~"232\t    while (SysTick->VAL > endtick) {}\n"
232	    while (SysTick->VAL > endtick) {}
-> *stopped,frame={addr="0x1000112a",func="MXC_Delay",args=[{name="us",value="200000"},{name="us@entry",value="200000"}],file="/home/jhcarter/repos/msdk/Libraries/CMSIS/../PeriphDrivers/Source/SYS/mxc_delay.c",fullname="/home/jhcarter/repos/msdk/Libraries/PeriphDrivers/Source/SYS/mxc_delay.c",line="232",arch="arm"},thread-id="1",stopped-threads="all"
mi2.status = stopped
Program stopped, probably due to a reset and/or halt issued by debugger
-> 11^connected
12-interpreter-exec console "monitor reset halt"
-> @"SWD DPIDR 0x2ba01477\n"
SWD DPIDR 0x2ba01477
-> @"[max32xxx.cpu] halted due to debug-request, current mode: Thread \n"
[max32xxx.cpu] halted due to debug-request, current mode: Thread
-> @"xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0\n"
xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0
-> 12^done
13-file-exec-file "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf"
-> 13^done
14-target-download
-> 14+download,{section=".text",section-size="57884",total-size="745477"}
-> 14+download,{section=".text",section-sent="16048",section-size="57884",total-sent="16048",total-size="745477"}
-> 14+download,{section=".ARM.exidx",section-size="8",total-size="745477"}
-> 14+download,{section=".data",section-size="2556",total-size="745477"}
-> 14+download,{section=".shared",section-size="4",total-size="745477"}
-> 14^done,address="0x10000d4c",load-size="60452",transfer-rate="212384",write-rate="8636"
15-interpreter-exec console "monitor reset halt"
-> @"SWD DPIDR 0x2ba01477\n"
SWD DPIDR 0x2ba01477
-> @"[max32xxx.cpu] halted due to debug-request, current mode: Thread \n"
[max32xxx.cpu] halted due to debug-request, current mode: Thread
-> @"xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0\n"
xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0
-> 15^done
16-break-insert "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:89"
-> ~"Note: automatically using hardware breakpoints for read-only addresses.\n"
Note: automatically using hardware breakpoints for read-only addresses.
-> 16^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x10000518",func="vTask0",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="90",thread-groups=["i1"],times="0",original-location="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:89"}
17-break-insert "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:130"
-> 17^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",thread-groups=["i1"],times="0",original-location="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:130"}
Returning dummy thread-id to workaround VSCode issue with pause button not working
Returning dummy stack frame to workaround VSCode issue with pause button not working: {"threadId":1,"startFrame":0,"levels":20}
18-break-insert -t --function main
-> 18^done,bkpt={number="3",type="breakpoint",disp="del",enabled="y",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",thread-groups=["i1"],times="0",original-location="-function main"}
19-exec-continue --all
-> 19^running
-> *running,thread-id="all"
mi2.status = running
-> =breakpoint-modified,bkpt={number="3",type="breakpoint",disp="del",enabled="y",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",thread-groups=["i1"],times="1",original-location="-function main"}
-> ~"\n"

-> ~"Temporary breakpoint 3, main () at main.c:360\n"
Temporary breakpoint 3, main () at main.c:360
-> ~"360\t{\n"
360	{
-> *stopped,reason="breakpoint-hit",disp="del",bkptno="3",frame={addr="0x10000814",func="main",args=[],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
-> =breakpoint-deleted,id="3"
20-thread-list-ids
-> 20^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
21-thread-info 1
-> 21^done,threads=[{id="1",target-id="Remote target",frame={level="0",addr="0x10000814",func="main",args=[],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"},state="stopped"}]
22-stack-list-frames --thread 1 0 19
-> 22^done,stack=[frame={level="0",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"},frame={level="1",addr="0x10000d84",func=".SKIPRAMINIT",arch="armv7e-m"}]
23-stack-info-frame --thread 1 --frame 0
-> 23^done,frame={level="0",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"}
24-stack-list-variables --thread 1 --frame 0 --simple-values
-> 24^done,variables=[{name="i",type="volatile int",value="0"}]
25-var-create --thread 1 --frame 0 var_i_4096 @ "i"
-> 25^done,name="var_i_4096",numchild="0",value="0",type="volatile int",has_more="0"
26-exec-continue --thread 1
-> 26^running
-> *running,thread-id="all"
mi2.status = running
-> =breakpoint-modified,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",thread-groups=["i1"],times="1",original-location="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:130"}
-> ~"\n"

-> ~"Breakpoint 2, vTask1 (pvParameters=0x0) at main.c:131\n"
Breakpoint 2, vTask1 (pvParameters=0x0) at main.c:131
-> ~"131\t{\n"
131	{
-> *stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame={addr="0x1000055c",func="vTask1",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
27-thread-list-ids
-> 27^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
28-thread-info 1
-> 28^done,threads=[{id="1",target-id="Remote target",frame={level="0",addr="0x1000055c",func="vTask1",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},state="stopped"}]
29-stack-list-frames --thread 1 0 19
-> 29^done,stack=[frame={level="0",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},frame={level="1",addr="0x10004054",func="vPortEnableVFP",file="Source/portable/GCC/ARM_CM4F/port.c",fullname="/home/jhcarter/repos/msdk/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c",line="768",arch="armv7e-m"}]
30-stack-info-frame --thread 1 --frame 0
-> 30^done,frame={level="0",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"}
31-stack-list-variables --thread 1 --frame 0 --simple-values
-> 31^done,variables=[{name="pvParameters",arg="1",type="void *",value="0x0"},{name="xLastWakeTime",type="TickType_t",value="268451925"},{name="x",type="unsigned int",value="<optimized out>"}]
32-var-create --thread 1 --frame 0 var_pvParameters_4096 @ "pvParameters"
-> 32^done,name="var_pvParameters_4096",numchild="0",value="0x0",type="void *",has_more="0"
33-var-create --thread 1 --frame 0 var_xLastWakeTime_4096 @ "xLastWakeTime"
-> 33^done,name="var_xLastWakeTime_4096",numchild="0",value="268451925",type="TickType_t",has_more="0"
34-var-create --thread 1 --frame 0 var_x_4096 @ "x"
-> 34^done,name="var_x_4096",numchild="0",value="<optimized out>",type="unsigned int",has_more="0"
35-break-delete
-> 35^done
36-target-disconnect
-> =thread-exited,id="1",group-id="i1"
-> =thread-group-exited,id="i1"
-> 36^done
-gdb-exit
-> ^exit
GDB session ended. exit-code: 0

Output for the successful profile

Cortex-Debug: VSCode debugger extension version 1.12.1 git(652d042). Usage info: https://github.com/Marus/cortex-debug#usage
"configuration": {
    "name": "Debug Arm (Cortex-debug)",
    "cwd": "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo",
    "executable": "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf",
    "request": "launch",
    "type": "cortex-debug",
    "servertype": "openocd",
    "searchDir": [
        "/home/jhcarter/repos/msdk/Tools/OpenOCD/scripts"
    ],
    "configFiles": [
        "interface/cmsis-dap.cfg",
        "target/max78000.cfg"
    ],
    "interface": "swd",
    "runToEntryPoint": "main",
    "svdFile": "/home/jhcarter/repos/msdk/Libraries/CMSIS/Device/Maxim/MAX78000/Include/MAX78000.svd",
    "showDevDebugOutput": "raw",
    "rtos": "FreeRTOS",
    "__configurationTarget": 6,
    "gdbServerConsolePort": 60001,
    "pvtAvoidPorts": [],
    "gdbPath": "/home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-gdb",
    "serverpath": "/home/jhcarter/repos/msdk/Tools/OpenOCD/openocd",
    "chainedConfigurations": {
        "enabled": false
    },
    "debuggerArgs": [],
    "swoConfig": {
        "enabled": false,
        "decoders": [],
        "cpuFrequency": 0,
        "swoFrequency": 0,
        "source": "probe"
    },
    "rttConfig": {
        "enabled": false,
        "decoders": []
    },
    "graphConfig": [],
    "preLaunchCommands": [],
    "postLaunchCommands": [],
    "preAttachCommands": [],
    "postAttachCommands": [],
    "preRestartCommands": [],
    "postRestartCommands": [],
    "preResetCommands": [],
    "postResetCommands": [],
    "toolchainPrefix": "arm-none-eabi",
    "extensionPath": "/home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1",
    "registerUseNaturalFormat": true,
    "variableUseNaturalFormat": true,
    "pvtVersion": "1.12.1",
    "__sessionId": "425db4bc-5fba-40e9-99dd-e356ea472e65",
    "pvtShowDevDebugOutput": "raw"
}
Reading symbols from /home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-objdump --syms -C -h -w /home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf
Reading symbols from /home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-nm --defined-only -S -l -C -p /home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf
Launching GDB: /home/jhcarter/repos/msdk/Tools/GNUTools/10.3/bin/arm-none-eabi-gdb -q --interpreter=mi2
1-gdb-version
Launching gdb-server: /home/jhcarter/repos/msdk/Tools/OpenOCD/openocd -c "gdb_port 50000" -c "tcl_port 50001" -c "telnet_port 50002" -s /home/jhcarter/repos/msdk/Tools/OpenOCD/scripts -f /home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1/support/openocd-helpers.tcl -f interface/cmsis-dap.cfg -f target/max78000.cfg -c "CDRTOSConfigure FreeRTOS"
    Please check TERMINAL tab (gdb-server) for output from /home/jhcarter/repos/msdk/Tools/OpenOCD/openocd
Finished reading symbols from objdump: Time: 17 ms
Finished reading symbols from nm: Time: 21 ms
-> =thread-group-added,id="i1"
-> ~"GNU gdb (GNU Arm Embedded Toolchain 10.3-2021.10) 10.2.90.20210621-git\n"
-> ~"Copyright (C) 2021 Free Software Foundation, Inc.\n"
-> ~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law."
-> ~"\nType \"show copying\" and \"show warranty\" for details.\n"
-> ~"This GDB was configured as \"--host=x86_64-linux-gnu --target=arm-none-eabi\".\n"
-> ~"Type \"show configuration\" for configuration details.\n"
-> ~"For bug reporting instructions, please see:\n"
-> ~"<https://www.gnu.org/software/gdb/bugs/>.\n"
-> ~"Find the GDB manual and other documentation resources online at:\n    <http://www.gnu.org/software/gdb/documentation/>."
-> ~"\n\n"
-> ~"For help, type \"help\".\n"
-> ~"Type \"apropos word\" to search for commands related to \"word\".\n"
-> 1^done
2-gdb-set mi-async on
-> 2^done
3-interpreter-exec console "set print demangle on"
-> 3^done
4-interpreter-exec console "set print asm-demangle on"
-> =cmd-param-changed,param="print asm-demangle",value="on"
-> 4^done
5-enable-pretty-printing
-> 5^done
6-interpreter-exec console "source /home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1/support/gdbsupport.init"
-> 6^done
7-interpreter-exec console "source /home/jhcarter/.vscode/extensions/marus25.cortex-debug-1.12.1/support/gdb-swo.init"
-> =cmd-param-changed,param="language",value="c"
-> =cmd-param-changed,param="language",value="auto"
-> 7^done
8-interpreter-exec console "set output-radix 0xa"
-> ~"Output radix now set to decimal 10, hex a, octal 12.\n"
Output radix now set to decimal 10, hex a, octal 12.
-> 8^done
9-interpreter-exec console "set input-radix 0xa"
-> ~"Input radix now set to decimal 10, hex a, octal 12.\n"
Input radix now set to decimal 10, hex a, octal 12.
-> 9^done
10-file-exec-and-symbols "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/build/FreeRTOSDemo.elf"
-> 10^done
11-target-select extended-remote localhost:50000
-> =thread-group-started,id="i1",pid="42000"
-> =thread-created,id="1",group-id="i1"
-> ~"0x1000112c in MXC_Delay (us=us@entry=200000) at /home/jhcarter/repos/msdk/Libraries/CMSIS/../PeriphDrivers/Source/SYS/mxc_delay.c:232\n"
0x1000112c in MXC_Delay (us=us@entry=200000) at /home/jhcarter/repos/msdk/Libraries/CMSIS/../PeriphDrivers/Source/SYS/mxc_delay.c:232
-> ~"232\t    while (SysTick->VAL > endtick) {}\n"
232	    while (SysTick->VAL > endtick) {}
-> *stopped,frame={addr="0x1000112c",func="MXC_Delay",args=[{name="us",value="200000"},{name="us@entry",value="200000"}],file="/home/jhcarter/repos/msdk/Libraries/CMSIS/../PeriphDrivers/Source/SYS/mxc_delay.c",fullname="/home/jhcarter/repos/msdk/Libraries/PeriphDrivers/Source/SYS/mxc_delay.c",line="232",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
Program stopped, probably due to a reset and/or halt issued by debugger
-> 11^connected
12-interpreter-exec console "monitor reset halt"
-> @"SWD DPIDR 0x2ba01477\n"
SWD DPIDR 0x2ba01477
-> @"[max32xxx.cpu] halted due to debug-request, current mode: Thread \n"
[max32xxx.cpu] halted due to debug-request, current mode: Thread
-> @"xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0\n"
xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0
-> 12^done
13-target-download
-> 13+download,{section=".text",section-size="57884",total-size="745477"}
-> 13+download,{section=".text",section-sent="16048",section-size="57884",total-sent="16048",total-size="745477"}
-> 13+download,{section=".ARM.exidx",section-size="8",total-size="745477"}
-> 13+download,{section=".data",section-size="2556",total-size="745477"}
-> 13+download,{section=".shared",section-size="4",total-size="745477"}
-> 13^done,address="0x10000d4c",load-size="60452",transfer-rate="212384",write-rate="8636"
14-interpreter-exec console "monitor reset halt"
-> @"SWD DPIDR 0x2ba01477\n"
SWD DPIDR 0x2ba01477
-> @"[max32xxx.cpu] halted due to debug-request, current mode: Thread \n"
[max32xxx.cpu] halted due to debug-request, current mode: Thread
-> @"xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0\n"
xPSR: 0x81000000 pc: 0x00002124 msp: 0x20003ff0
-> 14^done
15-break-insert "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:89"
-> ~"Note: automatically using hardware breakpoints for read-only addresses.\n"
Note: automatically using hardware breakpoints for read-only addresses.
-> 15^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x10000518",func="vTask0",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="90",thread-groups=["i1"],times="0",original-location="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:89"}
16-break-insert "/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:130"
-> 16^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",thread-groups=["i1"],times="0",original-location="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:130"}
Returning dummy thread-id to workaround VSCode issue with pause button not working
Returning dummy stack frame to workaround VSCode issue with pause button not working: {"threadId":1,"startFrame":0,"levels":20}
17-break-insert -t --function main
-> 17^done,bkpt={number="3",type="breakpoint",disp="del",enabled="y",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",thread-groups=["i1"],times="0",original-location="-function main"}
18-exec-continue --all
-> 18^running
-> *running,thread-id="all"
mi2.status = running
-> =thread-created,id="2",group-id="i1"
-> ~"[New Thread 1]\n"
[New Thread 1]
-> =breakpoint-modified,bkpt={number="3",type="breakpoint",disp="del",enabled="y",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",thread-groups=["i1"],times="1",original-location="-function main"}
-> =thread-exited,id="1",group-id="i1"
-> ~"[Switching to Thread 1]\n"
[Switching to Thread 1]
-> ~"\n"

-> ~"Thread 2 \"Current Execution\" hit Temporary breakpoint 3, main () at main.c:360\n"
Thread 2 "Current Execution" hit Temporary breakpoint 3, main () at main.c:360
-> ~"360\t{\n"
360	{
-> *stopped,reason="breakpoint-hit",disp="del",bkptno="3",frame={addr="0x10000814",func="main",args=[],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"},thread-id="2",stopped-threads="all"
mi2.status = stopped
-> =breakpoint-deleted,id="3"
19-thread-list-ids
-> 19^done,thread-ids={thread-id="2"},current-thread-id="2",number-of-threads="1"
20-thread-info 2
-> 20^done,threads=[{id="2",target-id="Thread 1",details="Name: Current Execution",name="Current Execution",frame={level="0",addr="0x10000814",func="main",args=[],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"},state="stopped"}]
21-stack-list-frames --thread 2 0 19
-> 21^done,stack=[frame={level="0",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"}]
22-thread-list-ids
-> 22^done,thread-ids={thread-id="2"},current-thread-id="2",number-of-threads="1"
23-thread-info 2
-> 23^done,threads=[{id="2",target-id="Thread 1",details="Name: Current Execution",name="Current Execution",frame={level="0",addr="0x10000814",func="main",args=[],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"},state="stopped"}]
24-stack-info-frame --thread 2 --frame 0
-> 24^done,frame={level="0",addr="0x10000814",func="main",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="360",arch="armv7e-m"}
25-stack-list-variables --thread 2 --frame 0 --simple-values
-> 25^done,variables=[{name="i",type="volatile int",value="0"}]
26-var-create --thread 2 --frame 0 var_i_8192 @ "i"
-> 26^done,name="var_i_8192",numchild="0",value="0",type="volatile int",has_more="0"
27-exec-continue --thread 2
-> 27^running
-> *running,thread-id="all"
mi2.status = running
-> =thread-created,id="3",group-id="i1"
-> ~"[New Thread 536876256]\n"
[New Thread 536876256]
-> =breakpoint-modified,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",thread-groups=["i1"],times="1",original-location="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c:130"}
-> =thread-exited,id="2",group-id="i1"
-> =thread-created,id="4",group-id="i1"
-> ~"[New Thread 536881056]\n"
[New Thread 536881056]
-> =thread-created,id="5",group-id="i1"
-> ~"[New Thread 536880416]\n"
[New Thread 536880416]
-> =thread-created,id="6",group-id="i1"
-> ~"[New Thread 536875616]\n"
[New Thread 536875616]
-> =thread-created,id="7",group-id="i1"
-> ~"[New Thread 536877408]\n"
[New Thread 536877408]
-> ~"[Switching to Thread 536876256]\n"
[Switching to Thread 536876256]
-> ~"\n"

-> ~"Thread 3 \"Task1\" hit Breakpoint 2, vTask1 (pvParameters=0x0) at main.c:131\n"
Thread 3 "Task1" hit Breakpoint 2, vTask1 (pvParameters=0x0) at main.c:131
-> ~"131\t{\n"
131	{
-> *stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame={addr="0x1000055c",func="vTask1",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},thread-id="3",stopped-threads="all"
mi2.status = stopped
28-thread-list-ids
-> 28^done,thread-ids={thread-id="3",thread-id="4",thread-id="5",thread-id="6",thread-id="7"},current-thread-id="3",number-of-threads="5"
29-thread-info 3
-> 29^done,threads=[{id="3",target-id="Thread 536876256",details="Name: Task1, State: Running",name="Task1",frame={level="0",addr="0x1000055c",func="vTask1",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},state="stopped"}]
30-thread-info 4
-> 30^done,threads=[{id="4",target-id="Thread 536881056",details="Name: IDLE",name="IDLE",frame={level="0",addr="0x100030a4",func="prvIdleTask",args=[{name="pvParameters",value="0x0"}],file="Source/tasks.c",fullname="/home/jhcarter/repos/msdk/Libraries/FreeRTOS/Source/tasks.c",line="3428",arch="armv7e-m"},state="stopped"}]
31-thread-info 5
-> 31^done,threads=[{id="5",target-id="Thread 536880416",details="Name: CmdLineTask",name="CmdLineTask",frame={level="0",addr="0x1000062c",func="vCmdLineTask",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="229",arch="armv7e-m"},state="stopped"}]
32-thread-info 6
-> 32^done,threads=[{id="6",target-id="Thread 536875616",details="Name: Task0",name="Task0",frame={level="0",addr="0x10000518",func="vTask0",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="90",arch="armv7e-m"},state="stopped"}]
33-thread-info 7
-> 33^done,threads=[{id="7",target-id="Thread 536877408",details="Name: TickTock",name="TickTock",frame={level="0",addr="0x100037ba",func="xTaskDelayUntil",args=[{name="pxPreviousWakeTime",value="0x2000193c <ucHeap+2388>"},{name="pxPreviousWakeTime@entry",value="0x2000193c <ucHeap+2388>"},{name="xTimeIncrement",value="10000"},{name="xTimeIncrement@entry",value="10000"}],file="Source/tasks.c",fullname="/home/jhcarter/repos/msdk/Libraries/FreeRTOS/Source/tasks.c",line="1293",arch="armv7e-m"},state="stopped"}]
34-thread-list-ids
-> 34^done,thread-ids={thread-id="3",thread-id="4",thread-id="5",thread-id="6",thread-id="7"},current-thread-id="3",number-of-threads="5"
35-thread-info 3
-> 35^done,threads=[{id="3",target-id="Thread 536876256",details="Name: Task1, State: Running",name="Task1",frame={level="0",addr="0x1000055c",func="vTask1",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},state="stopped"}]
36-thread-info 4
-> 36^done,threads=[{id="4",target-id="Thread 536881056",details="Name: IDLE",name="IDLE",frame={level="0",addr="0x100030a4",func="prvIdleTask",args=[{name="pvParameters",value="0x0"}],file="Source/tasks.c",fullname="/home/jhcarter/repos/msdk/Libraries/FreeRTOS/Source/tasks.c",line="3428",arch="armv7e-m"},state="stopped"}]
37-thread-info 5
-> 37^done,threads=[{id="5",target-id="Thread 536880416",details="Name: CmdLineTask",name="CmdLineTask",frame={level="0",addr="0x1000062c",func="vCmdLineTask",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="229",arch="armv7e-m"},state="stopped"}]
38-thread-info 6
-> 38^done,threads=[{id="6",target-id="Thread 536875616",details="Name: Task0",name="Task0",frame={level="0",addr="0x10000518",func="vTask0",args=[{name="pvParameters",value="0x0"}],file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="90",arch="armv7e-m"},state="stopped"}]
39-thread-info 7
-> 39^done,threads=[{id="7",target-id="Thread 536877408",details="Name: TickTock",name="TickTock",frame={level="0",addr="0x100037ba",func="xTaskDelayUntil",args=[{name="pxPreviousWakeTime",value="0x2000193c <ucHeap+2388>"},{name="pxPreviousWakeTime@entry",value="0x2000193c <ucHeap+2388>"},{name="xTimeIncrement",value="10000"},{name="xTimeIncrement@entry",value="10000"}],file="Source/tasks.c",fullname="/home/jhcarter/repos/msdk/Libraries/FreeRTOS/Source/tasks.c",line="1293",arch="armv7e-m"},state="stopped"}]
40-stack-list-frames --thread 3 0 19
-> 40^done,stack=[frame={level="0",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"},frame={level="1",addr="0x10004054",func="vPortEnableVFP",file="Source/portable/GCC/ARM_CM4F/port.c",fullname="/home/jhcarter/repos/msdk/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c",line="768",arch="armv7e-m"}]
41-stack-info-frame --thread 3 --frame 0
-> 41^done,frame={level="0",addr="0x1000055c",func="vTask1",file="main.c",fullname="/home/jhcarter/repos/msdk/Examples/MAX78000/FreeRTOSDemo/main.c",line="131",arch="armv7e-m"}
42-stack-list-variables --thread 3 --frame 0 --simple-values
-> 42^done,variables=[{name="pvParameters",arg="1",type="void *",value="0x0"},{name="xLastWakeTime",type="TickType_t",value="268451925"},{name="x",type="unsigned int",value="<optimized out>"}]
43-var-create --thread 3 --frame 0 var_pvParameters_12288 @ "pvParameters"
-> 43^done,name="var_pvParameters_12288",numchild="0",value="0x0",type="void *",has_more="0"
44-var-create --thread 3 --frame 0 var_xLastWakeTime_12288 @ "xLastWakeTime"
-> 44^done,name="var_xLastWakeTime_12288",numchild="0",value="268451925",type="TickType_t",has_more="0"
45-var-create --thread 3 --frame 0 var_x_12288 @ "x"
-> 45^done,name="var_x_12288",numchild="0",value="<optimized out>",type="unsigned int",has_more="0"

Additional context

We use an OpenOCD debug server with configure -rtos auto added to our target's .cfg files. The symbols are there in the binary and can be loaded successfully on the command-line using exec-file/symbol-file:

GNU gdb (GNU Arm Embedded Toolchain 10.3-2021.10) 10.2.90.20210621-git
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) exec-file build/FreeRTOSDemo.elf
(gdb) symbol-file build/FreeRTOSDemo.elf
Reading symbols from build/FreeRTOSDemo.elf...
(gdb) target extended-remote localhost:3333
Remote debugging using localhost:3333
0x00002124 in ?? ()
(gdb) b main
Breakpoint 1 at 0x10000814: file main.c, line 360.
Note: automatically using hardware breakpoints for read-only addresses.
(gdb) c
Continuing.
[New Thread 1]
[Switching to Thread 1]

Thread 2 "Current Execution" hit Breakpoint 1, main () at main.c:360
360     {
(gdb) c
Continuing.
^C[New Thread 536881056]
[New Thread 536877408]
[New Thread 536875616]
[New Thread 536876256]
[New Thread 536880416]

Thread 3 "IDLE" received signal SIGINT, Interrupt.
[Switching to Thread 536881056]
prvIdleTask (pvParameters=<optimized out>) at Source/tasks.c:3467
3467                if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 )
(gdb) info thread
  Id   Target Id                                            Frame 
* 3    Thread 536881056 "IDLE" (Name: IDLE, State: Running) prvIdleTask (pvParameters=<optimized out>)
    at Source/tasks.c:3467
  4    Thread 536877408 "TickTock" (Name: TickTock)         xTaskDelayUntil (
    pxPreviousWakeTime=pxPreviousWakeTime@entry=0x2000193c <ucHeap+2388>, 
    xTimeIncrement=xTimeIncrement@entry=10000) at Source/tasks.c:1293
  5    Thread 536875616 "Task0" (Name: Task0)               xTaskDelayUntil (
    pxPreviousWakeTime=pxPreviousWakeTime@entry=0x2000123c <ucHeap+596>, 
    xTimeIncrement=xTimeIncrement@entry=1000) at Source/tasks.c:1293
  6    Thread 536876256 "Task1" (Name: Task1)               xTaskDelayUntil (
    pxPreviousWakeTime=pxPreviousWakeTime@entry=0x200014bc <ucHeap+1236>, 
    xTimeIncrement=xTimeIncrement@entry=1000) at Source/tasks.c:1293
  7    Thread 536880416 "CmdLineTask" (Name: CmdLineTask)   ulTaskGenericNotifyTake (
    uxIndexToWait=uxIndexToWait@entry=0, xClearCountOnExit=xClearCountOnExit@entry=1, 
    xTicksToWait=xTicksToWait@entry=4294967295) at Source/tasks.c:4730
(gdb) 
@whosht
Copy link

whosht commented Jul 16, 2024

+1
Currently I use another launcher which just attaches to the already flashed target with the ELF-binary as executable.

@haneefdm
Copy link
Collaborator

I think I understand what is going on. OpenOCD (any gdb-server) gets one chance to query gdb for symbol info and that is at the very start of the session. We are not involved in providing this info. In OpenOCD, there are no re-tries if the symbols change, because it doesn't even know that such a thing occurred.

But, if we are loading the elf files very late during the debug cycle and can do something about it, then we will. We may have a chicken and egg situation. I also see this as a common problem and I am sure there are solutions out there. Hope we get lucky and stumble across the solution. Most of this is not documented well btw.

@whosht
Copy link

whosht commented Jul 16, 2024

@haneefdm: nice
I forgot to note: This also happens with J-Link (debug server).

@haneefdm
Copy link
Collaborator

Good to know. If/When this gets fixed, I will need help testing it. I will report back here.

This will be a large enough (dangerous) change that it may require a pre-release so it will not destroy development environments for half a million users.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants