代码之家  ›  专栏  ›  技术社区  ›  0___________

只有手动启动gdbserver时,visualstudio 2019 ARM嵌入式调试才会启动

  •  0
  • 0___________  · 技术社区  · 5 年前

        {
          "type": "cppdbg",
          "name": "stlink-openOCD-GCEG-FW.elf",
          "project": "C:\\Users\\Piotr\\git\\gPIMS-EG\\out\\build\\IoT-Debug\\GCEG-FW.elf",
          "projectTarget": "",
          "cwd": "C:\\Users\\Piotr\\git\\gPIMS-EG",
          "program": "C:\\Users\\Piotr\\git\\gPIMS-EG\\out\\build\\IoT-Debug\\GCEG-FW.elf",
          "MIMode": "gdb",
          "externalConsole": true,
          "inheritEnvironments": [
            "gcc_arm"
          ],
          "miDebuggerPath": "C:\\Program Files (x86)\\Atollic\\TrueSTUDIO for STM32 9.3.0\\ARMTools\\bin\\arm-atollic-eabi-gdb.exe",
          "setupCommands": [
            {
              "text": "-file-exec-and-symbols C:/Users/Piotr/git/gPIMS-EG/out/build/IoT-Debug/GCEG-FW.elf",
              "description": "load file",
              "ignoreFailures": false
            },
            {
              "text": "-interpreter-exec console \"monitor reset halt\"",
              "ignoreFailures": false
            },
            {
              "text": "-target-download",
              "description": "flash target",
              "ignoreFailures": false
            }
          ],
          "visualizerFile": "",
          "showDisplayString": true,
          "miDebuggerServerAddress": "localhost:3333",
          "launchCompleteCommand": "None",
          "debugServerPath": "C:\\openocd-0.10.0\\bin-x64\\openocd.exe",
          "debugServerArgs": "-f board\\st_nucleo_l476rg.cfg",
          "serverStarted": "stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints",
          "filterStderr": true,
          "filterStdout": true
        }
      ]
    }
    

    enter image description here

    当我移除 "miDebuggerServerAddress": "localhost:3333", 它停止运行openOCD。对于实验,我可以手动启动它,并从CLI发送相同的MI命令,一切正常。

    C:\openocd-0.10.0\bin-x64>"C:\Program Files (x86)\Atollic\TrueSTUDIO for STM32 9.3.0\ARMTools\bin\arm-atollic-eabi-gdb.exe" --interpreter=mi
    =thread-group-added,id="i1"
    ~"GNU gdb (GNU Tools for ARM Embedded Processors (Build 17.03)) 7.10.1.20160923-cvs\n"
    ~"Copyright (C) 2015 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.  Type \"show copying\"\nand \"show warranty\" for details.\n"
    ~"This GDB was configured as \"--host=i686-w64-mingw32 --target=arm-atollic-eabi\".\nType \"show configuration\" for configuration details."
    ~"\nFor bug reporting instructions, please see:\n"
    ~"<http://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"
    ~"For help, type \"help\".\n"
    ~"Type \"apropos word\" to search for commands related to \"word\".\n"
    (gdb)
    -target-select remote localhost:3333
    =thread-group-started,id="i1",pid="42000"
    =thread-created,id="1",group-id="i1"
    ~"0x08027f7c in ?? ()\n"
    *stopped,frame={addr="0x08027f7c",func="??",args=[]},thread-id="1",stopped-threads="all"
    ^connected
    (gdb)
    -file-exec-and-symbols C:/Users/Piotr/git/gPIMS-EG/out/build/IoT-Debug/GCEG-FW.elf
    ^done
    (gdb)
    -interpreter-exec console "monitor reset halt"
    @"Unable to match requested speed 500 kHz, using 480 kHz\n"
    @"Unable to match requested speed 500 kHz, using 480 kHz\n"
    @"adapter speed: 480 kHz\n"
    @"target halted due to debug-request, current mode: Thread \n"
    @"xPSR: 0x01000000 pc: 0x08027f7c msp: 0x20018000\n"
    ^done
    (gdb)
    

    有谁能告诉我微软在gdb模式下做了什么,认为target不支持monitor命令。当我使用gdb form命令行时,我甚至不能重现这种行为(我已经尝试过很多次)。当我手动启动openOCD时,使用下面所示的配置可以正常工作。

    问题是:如果没有手动启动openOCD,我能做些什么来从VS调试它?

        {
          "type": "cppdbg",
          "name": "stlink-openOCD-GCEG-FW.elf",
          "project": "C:\\Users\\Piotr\\git\\gPIMS-EG\\out\\build\\IoT-Debug\\GCEG-FW.elf",
          "projectTarget": "",
          "cwd": "C:\\Users\\Piotr\\git\\gPIMS-EG",
          "program": "C:\\Users\\Piotr\\git\\gPIMS-EG\\out\\build\\IoT-Debug\\GCEG-FW.elf",
          "MIMode": "gdb",
          "externalConsole": true,
          "inheritEnvironments": [
            "gcc_arm"
          ],
          "miDebuggerPath": "C:\\Program Files (x86)\\Atollic\\TrueSTUDIO for STM32 9.3.0\\ARMTools\\bin\\arm-atollic-eabi-gdb.exe",
          "setupCommands": [
            {
              "text": "-target-select remote localhost:3333",
              "description": "connect to target",
              "ignoreFailures": false
            },
            {
              "text": "-file-exec-and-symbols C:/Users/Piotr/git/gPIMS-EG/out/build/IoT-Debug/GCEG-FW.elf",
              "description": "load file",
              "ignoreFailures": false
            },
            {
              "text": "-interpreter-exec console \"monitor reset halt\"",
              "ignoreFailures": false
            },
            {
              "text": "-target-download",
              "description": "flash target",
              "ignoreFailures": false
            }
          ],
          "visualizerFile": "",
          "showDisplayString": true,
    
          "launchCompleteCommand": "None",
          "debugServerPath": "C:\\openocd-0.10.0\\bin-x64\\openocd.exe",
          "debugServerArgs": "-f board\\st_nucleo_l476rg.cfg",
          "serverStarted": "stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints",
          "filterStderr": true,
          "filterStdout": true
        }
      ]
    }
    
    0 回复  |  直到 5 年前
    推荐文章