这是我的设置:
这是我的代码:
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
void app_main(void)
{
int i = 0;
while (1)
{
i++;
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
这是我的
launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"type": "espidf",
"name": "Launch",
"request": "launch",
"debugPort": 3333, // tried with 4444, 6666, 43474
"logLevel": 2,
"mode": "manual",
"verifyAppBinBeforeDebug": false,
"tmoScaleFactor": 1,
"initGdbCommands": [
"target remote :3333",
"symbol-file /build/main.elf",
"mon reset halt",
"flushregs",
"thb app_main",
"c"
],
"env": {
"CUSTOM_ENV_VAR": "SOME_VALUE"
}
}
]
}
我的目标是配置 IDE 以通过 USB/JTAG 使用片上调试器来调试固件。
/home/mark/.espressif/tools/openocd-esp32/v0.12.0-esp32-20230921/openocd-esp32/bin/openocd
[OpenOCD]
Open On-Chip Debugger v0.12.0-esp32-20230921 (2023-09-21-13:41)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
debug_level: 2
Info : only one transport option; autoselecting 'jtag'
[OpenOCD]
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
[OpenOCD]
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
[OpenOCD]
Info : esp_usb_jtag: serial (40:4C:CA:41:3B:00)
[OpenOCD]
Info : esp_usb_jtag: Device found. Base speed 24000KHz, div range 1 to 255
[OpenOCD]
Info : clock speed 24000 kHz
[OpenOCD]
Info : JTAG tap: esp32c6.cpu tap/device found: 0x0000dc25 (mfg: 0x612 (Espressif Systems), part: 0x000d, ver: 0x0)
[OpenOCD]
Info : [esp32c6] datacount=2 progbufsize=16
[OpenOCD]
Info : [esp32c6] Examined RISC-V core; found 2 harts
Info : [esp32c6] XLEN=32, misa=0x40903105
[OpenOCD]
Info : starting gdb server for esp32c6 on 3333
Info : Listening on port 3333 for gdb connections
[OpenOCD]
Info : accepting 'gdb' connection on tcp/3333
[OpenOCD]
Warn : No symbols for FreeRTOS!
[OpenOCD]
Info : [esp32c6] Found 4 triggers.
[OpenOCD]
Info : Flash mapping 0: 0x10020 -> 0x42010020, 30 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 56 KB
[OpenOCD]
Info : Auto-detected flash bank 'esp32c6.flash' size 4096 KB
Info : Using flash bank 'esp32c6.flash' size 4096 KB
[OpenOCD]
Info : Flash mapping 0: 0x10020 -> 0x42010020, 30 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 56 KB
Info : Using flash bank 'esp32c6.irom' size 60 KB
[OpenOCD]
Info : Flash mapping 0: 0x10020 -> 0x42010020, 30 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 56 KB
Info : Using flash bank 'esp32c6.drom' size 32 KB
Warn : ignoring character 0x43
Warn : ignoring character 0x6f
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : negative acknowledgment, but no packet pending
Warn : ignoring character 0x4c
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x67
Warn : ignoring character 0x74
Warn : ignoring character 0x68
Warn : ignoring character 0x3a
Warn : ignoring character 0x20
Warn : ignoring character 0x35
Warn : ignoring character 0x31
Warn : ignoring character 0x34
Warn : ignoring character 0xd
Warn : ignoring character 0xa
Warn : ignoring character 0xd
Warn : ignoring character 0xa
Warn : ignoring character 0x7b
Warn : ignoring character 0x22
Warn : ignoring character 0x63
Warn : ignoring character 0x6f
Warn : ignoring character 0x6d
Warn : ignoring character 0x6d
Warn : ignoring character 0x61
Warn : ignoring character 0x6e
Warn : ignoring character 0x64
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x69
Warn : ignoring character 0x6e
Warn : ignoring character 0x69
Warn : ignoring character 0x74
Warn : ignoring character 0x69
Warn : ignoring character 0x61
Warn : ignoring character 0x6c
Warn : ignoring character 0x69
Warn : ignoring character 0x7a
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x61
Warn : ignoring character 0x72
Warn : ignoring character 0x67
Warn : ignoring character 0x75
Warn : ignoring character 0x6d
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x7b
Warn : ignoring character 0x22
Warn : ignoring character 0x63
Warn : ignoring character 0x6c
Warn : ignoring character 0x69
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x49
Warn : ignoring character 0x44
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x76
Warn : ignoring character 0x73
Warn : ignoring character 0x63
Warn : ignoring character 0x6f
Warn : ignoring character 0x64
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x63
Warn : ignoring character 0x6c
Warn : ignoring character 0x69
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x4e
Warn : ignoring character 0x61
Warn : ignoring character 0x6d
[OpenOCD]
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x56
Warn : ignoring character 0x69
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x61
Warn : ignoring character 0x6c
Warn : ignoring character 0x20
Warn : ignoring character 0x53
Warn : ignoring character 0x74
Warn : ignoring character 0x75
Warn : ignoring character 0x64
Warn : ignoring character 0x69
Warn : ignoring character 0x6f
Warn : ignoring character 0x20
Warn : ignoring character 0x43
Warn : ignoring character 0x6f
Warn : ignoring character 0x64
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x61
Warn : ignoring character 0x64
Warn : ignoring character 0x61
Warn : ignoring character 0x70
Warn : ignoring character 0x74
Warn : ignoring character 0x65
Warn : ignoring character 0x72
Warn : ignoring character 0x49
Warn : ignoring character 0x44
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x70
Warn : ignoring character 0x69
Warn : ignoring character 0x64
Warn : ignoring character 0x66
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x70
Warn : ignoring character 0x61
Warn : ignoring character 0x74
Warn : ignoring character 0x68
Warn : ignoring character 0x46
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x6d
Warn : ignoring character 0x61
Warn : ignoring character 0x74
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x70
Warn : ignoring character 0x61
Warn : ignoring character 0x74
Warn : ignoring character 0x68
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x6c
Warn : ignoring character 0x69
Warn : ignoring character 0x6e
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x53
Warn : ignoring character 0x74
Warn : ignoring character 0x61
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x41
Warn : ignoring character 0x74
Warn : ignoring character 0x31
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x63
Warn : ignoring character 0x6f
Warn : ignoring character 0x6c
Warn : ignoring character 0x75
Warn : ignoring character 0x6d
Warn : ignoring character 0x6e
Warn : ignoring character 0x73
Warn : ignoring character 0x53
Warn : ignoring character 0x74
Warn : ignoring character 0x61
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x41
Warn : ignoring character 0x74
Warn : ignoring character 0x31
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x56
Warn : ignoring character 0x61
Warn : ignoring character 0x72
Warn : ignoring character 0x69
Warn : ignoring character 0x61
Warn : ignoring character 0x62
Warn : ignoring character 0x6c
Warn : ignoring character 0x65
Warn : ignoring character 0x54
Warn : ignoring character 0x79
Warn : ignoring character 0x70
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x56
Warn : ignoring character 0x61
Warn : ignoring character 0x72
Warn : ignoring character 0x69
Warn : ignoring character 0x61
Warn : ignoring character 0x62
Warn : ignoring character 0x6c
Warn : ignoring character 0x65
Warn : ignoring character 0x50
Warn : ignoring character 0x61
Warn : ignoring character 0x67
Warn : ignoring character 0x69
Warn : ignoring character 0x6e
Warn : ignoring character 0x67
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x52
Warn : ignoring character 0x75
Warn : ignoring character 0x6e
Warn : ignoring character 0x49
Warn : ignoring character 0x6e
Warn : ignoring character 0x54
Warn : ignoring character 0x65
Warn : ignoring character 0x72
Warn : ignoring character 0x6d
Warn : ignoring character 0x69
Warn : ignoring character 0x6e
Warn : ignoring character 0x61
Warn : ignoring character 0x6c
Warn : ignoring character 0x52
Warn : ignoring character 0x65
Warn : ignoring character 0x71
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x74
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x6c
Warn : ignoring character 0x6f
Warn : ignoring character 0x63
Warn : ignoring character 0x61
Warn : ignoring character 0x6c
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x50
Warn : ignoring character 0x72
Warn : ignoring character 0x6f
Warn : ignoring character 0x67
Warn : ignoring character 0x72
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x73
Warn : ignoring character 0x52
Warn : ignoring character 0x65
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x69
Warn : ignoring character 0x6e
Warn : ignoring character 0x67
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x49
Warn : ignoring character 0x6e
Warn : ignoring character 0x76
Warn : ignoring character 0x61
Warn : ignoring character 0x6c
Warn : ignoring character 0x69
Warn : ignoring character 0x64
Warn : ignoring character 0x61
Warn : ignoring character 0x74
Warn : ignoring character 0x65
Warn : ignoring character 0x64
Warn : ignoring character 0x45
Warn : ignoring character 0x76
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x4d
Warn : ignoring character 0x65
Warn : ignoring character 0x6d
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x79
Warn : ignoring character 0x52
Warn : ignoring character 0x65
Warn : ignoring character 0x66
Warn : ignoring character 0x65
Warn : ignoring character 0x72
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x63
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
[OpenOCD]
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x41
Warn : ignoring character 0x72
Warn : ignoring character 0x67
Warn : ignoring character 0x73
Warn : ignoring character 0x43
Warn : ignoring character 0x61
Warn : ignoring character 0x6e
Warn : ignoring character 0x42
Warn : ignoring character 0x65
Warn : ignoring character 0x49
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x65
Warn : ignoring character 0x72
Warn : ignoring character 0x70
Warn : ignoring character 0x72
Warn : ignoring character 0x65
Warn : ignoring character 0x74
Warn : ignoring character 0x65
Warn : ignoring character 0x64
Warn : ignoring character 0x42
Warn : ignoring character 0x79
Warn : ignoring character 0x53
Warn : ignoring character 0x68
Warn : ignoring character 0x65
Warn : ignoring character 0x6c
Warn : ignoring character 0x6c
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x4d
Warn : ignoring character 0x65
Warn : ignoring character 0x6d
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x79
Warn : ignoring character 0x45
Warn : ignoring character 0x76
Warn : ignoring character 0x65
Warn : ignoring character 0x6e
Warn : ignoring character 0x74
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x75
Warn : ignoring character 0x70
Warn : ignoring character 0x70
Warn : ignoring character 0x6f
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x73
Warn : ignoring character 0x53
Warn : ignoring character 0x74
Warn : ignoring character 0x61
Warn : ignoring character 0x72
Warn : ignoring character 0x74
Warn : ignoring character 0x44
Warn : ignoring character 0x65
Warn : ignoring character 0x62
Warn : ignoring character 0x75
Warn : ignoring character 0x67
Warn : ignoring character 0x67
Warn : ignoring character 0x69
Warn : ignoring character 0x6e
Warn : ignoring character 0x67
Warn : ignoring character 0x52
Warn : ignoring character 0x65
Warn : ignoring character 0x71
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x74
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x74
Warn : ignoring character 0x72
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x7d
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x74
Warn : ignoring character 0x79
Warn : ignoring character 0x70
Warn : ignoring character 0x65
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x22
Warn : ignoring character 0x72
Warn : ignoring character 0x65
Warn : ignoring character 0x71
Warn : ignoring character 0x75
Warn : ignoring character 0x65
Warn : ignoring character 0x73
Warn : ignoring character 0x74
Warn : ignoring character 0x22
Warn : ignoring character 0x2c
Warn : ignoring character 0x22
Warn : ignoring character 0x73
Warn : ignoring character 0x65
Warn : ignoring character 0x71
Warn : ignoring character 0x22
Warn : ignoring character 0x3a
Warn : ignoring character 0x31
Warn : ignoring character 0x7d
[OpenOCD]
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1355 ms). Workaround: increase "set remotetimeout" in GDB
我阅读了官方的guide来设置环境和相关文档。 我还发现了一些类似的问题(例如this和this),但没有任何有用的答案。
顺便说一句,使用 Microsoft C/C++ 扩展以及
launch.json
提供的文件这里我可以成功启动调试会话,因此硬件没问题。
我的配置中是否有任何错误会阻止使用 Espressif ESP-IDF 调试适配器?
我也遇到过类似的问题。设置几乎相同:
我发现提供
symbol-file /build/main.elf
参数会破坏调试。
如果省略此参数,则调试会话可以正常启动。 (但是这种方法存在一些问题(https://github.com/espressif/vscode-esp-idf-extension/issues/1138)。总之我无法让 ESP-IDF 调试适配器继续从一个断点到另一个断点(只有步骤功能有效)。
使用 Microsoft C/C++ 扩展和
launch.json
方法对我来说很有效。可以继续 (F5) 从一个断点到另一个断点。
所以我的
launch.json
文件看起来像:
{
"version": "0.2.0",
"configurations": [
{
"type": "espidf",
"name": "Launch",
"request": "launch",
"initGdbCommands": [
// extended-remote was advised in console
"target extended-remote :3333",
"set remote hardware-watchpoint-limit 2",
"mon reset halt",
// using this line instead of flushregs was advised in console
"maintenance flush register-cache",
"thb app_main",
"c",
],
},
{
"name": "Launch GDB ESP32",
"type": "cppdbg",
"request": "launch",
"cwd": "${workspaceFolder}/build",
"program": "${workspaceFolder}/build/gwfirmware.elf",
// Could specify direct path to .espressif tools instead of the command
"miDebuggerPath": "${command:espIdf.getXtensaGdb}",
"setupCommands": [
{ "text": "target extended-remote :3333" },
{ "text": "set remote hardware-watchpoint-limit 2"},
{ "text": "mon reset halt" },
{ "text": "maintenance flush register-cache" },
{ "text": "thb app_main" },
]
}
]
}