我正在使用FreeRTOS开发适用于Linux和嵌入式设备的应用程序。
该应用程序运行良好,但由于遇到断点后无法恢复,调试受到严重阻碍。
这是gdb的成绩单:
(gdb) break /mnt/d/alfie/gb/monorepo/freertos/queue.c:1244
Breakpoint 2 at 0x408ebc: file /mnt/d/alfie/gb/monorepo/freertos/queue.c, line 1244.
(gdb) start
Temporary breakpoint 3 at 0x4021fd: file /mnt/d/alfie/gb/monorepo/linux/app/main.c, line 55.
Starting program: /mnt/d/alfie/gb/monorepo/linux/app/AppLinux
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Temporary breakpoint 3, main () at /mnt/d/alfie/gb/monorepo/linux/app/main.c:55
55 LL_INFO(1, "Starting FreeRTOS!");
(gdb) c
Continuing.
[INFO] Starting FreeRTOS! (/mnt/d/alfie/gb/monorepo/linux/app/main.c:55)
Running as PID: 20862
[New Thread 0x7ffffeaf0700 (LWP 20863)]
[New Thread 0x7ffffe2e0700 (LWP 20864)]
[New Thread 0x7ffffdad0700 (LWP 20865)]
[New Thread 0x7ffffd2c0700 (LWP 20866)]
[INFO] Scheduler starting (/mnt/d/alfie/gb/monorepo/linux/app/main.c:74)
[New Thread 0x7ffffcab0700 (LWP 20867)]
Timer Resolution for Run TimeStats is 100 ticks per second.
[New Thread 0x7ffff7ff0700 (LWP 20868)]
[Switching to Thread 0x7ffffdad0700 (LWP 20865)]
Thread 4 "AppLinux" hit Breakpoint 2, xQueueGenericReceive (xQueue=0x69c420, pvBuffer=0x0, xTicksToWait=0, xJustPeeking=0)
at /mnt/d/alfie/gb/monorepo/freertos/queue.c:1244
1244 configASSERT( pxQueue );
(gdb) c
Continuing.
Thread 4 "AppLinux" received signal SIGTRAP, Trace/breakpoint trap.
<signal handler called>
(gdb)
此时,程序不想继续。尝试继续操作时,它将一遍又一遍地打印以下内容:
Thread 4 "AppLinux" received signal SIGTRAP, Trace/breakpoint trap.
我不确定这是线程问题(pthreads)还是FreeRTOS正在使用中断/ SIGTRAP来导致这种情况发生。
非常感谢任何帮助。