【发布时间】:2014-02-12 21:20:06
【问题描述】:
据我了解,在 linux 系统上调试是通过 ptrace 系统调用完成的。
我想知道如何为微控制器(无操作系统)编写调试器。
为简单起见,让我们假设像 Arduino Due(基于 ARM)这样的板的软件调试器的情况。
- 假设我对调试器在 Linux 和 Windows 上的工作方式有一个清晰的认识,我需要学习什么才能完成这样一个项目
- 为 MCU 系统编程调试器会有多大不同? (我不能使用系统调用)
- 是否可以通过 USB 或串行接口进行调试?
- 我应该使用哪些语言? (C、C++、Arm 汇编)
- armgcc 编译器如何帮助我完成项目(是否有 -g 等标志选项?)
我计划将调试器实现为命令行 Linux 实用程序。
【问题讨论】:
-
阅读 Gdb internals 文档(现在是一个 wiki)
-
我建议你看看 GDB debugger stubs。这些是使用 GDB 远程串行协议通过串行方式与 GDB 通信的小型、易于实现的代码片段。它记录在这里 (sourceware.org/gdb/current/onlinedocs/gdb/Remote-Protocol.html),一个例子在这里 (embecosm.com/appnotes/ean4/…)。然后,您将使用
target remote连接到您的开发板。该协议主要由以$开头的文本包组成,后跟一个命令及其参数,并以#和一个校验和结束。
标签: c linux debugging embedded arduino