# debugcmd **Repository Path**: mazcpnt/debugcmd ## Basic Information - **Project Name**: debugcmd - **Description**: 【稳定版】灵活好用的调试命令接口 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 4 - **Created**: 2020-12-20 - **Last Updated**: 2025-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 调试命令组件 ## 概述 在描述调试命令组件之前,我们先讲一个大家的需求点,就是我们在开发和调试的过程中,经常会需要人为的去主动触发一些特定的代码流程。举个例子,比如说当设备出现问题的时候,我们想看一下这个时候视频接入有没有中断(查看中断计数),或者是说我们想抓一张原图(触发抓图流程便于分析),那这个时候呢,我们是希望能够通过敲一条命令去执行特定的动作。就好比于我们在 Linux 终端下输入 ifconfig 命令查到当前的网络信息,输入 ps 查看进程信息。 就是说我们需要**一个能够执行命令、解析命令的一个工具。调试命令组件,它就是一个这样的工具**。 ## 演示 下图为移植到 Linux 平台下的演示效果: ![out.gif](images/1.gif) 备注:左边键盘提示信息,Return 表示的是按下了 Enter 建。 上面的演示案例中主要体现了: - 如何进入调试命令终端。 - 通过输入?查看帮助信息。 - 灵活的使用 TAB 进行命令的自动补全。 - 通过 CTRL+C 信号退出调试命令终端。 ## 接口 调试命令组件本质是管理和维护命令的工具。 调试命令组件允许我们向其注册命令,并且给每一个命令绑定特定的命令回调函数。并且提供解析字符串的能力,能够解析用户输入的字符串,去判断是否有命令关键字,如果说有命令关键字,并且和已经注册的命令是匹配的,将会调用执行对应的命令回调函数。 总的来说,调试命令提供以下几个接口: - 命令注册接口:允许用户注册命令并绑定对应的回调函数。 - 命令解析执行接口:允许用户输入字符串,将解析字符串是否有匹配的命令,有匹配的命令,则调用回调函数;没有匹配的命令,则返回错误并提示错误信息。 - 命令自动补全接口:允许用户输入部分字符串,并且按 TAB 键进行自动补全,如果已经输入的部分字符串有匹配的命令,则自动补全命令;没有匹配的命令的话,则输出错误提示音。这个接口是参照Linux的终端实现的。 ## 特性 - 命令分为两级,分为主命令和子命令。 - 使用链表进行存储,对于主子命令的个数无限制。 - 具有默认的命令帮助信息。通过问号查看。 - 支持TAB自动补全,仅支持补全主子命令,参数不支持补全。 ## 目录 该组件的代码目录结构如下: ``` paul@vmware:~/study/debugcmd$ tree . ├── demo │   └── linux │   ├── host-v1.0.0 │   │   ├── main.c │   │   ├── Makefile │   │   └── README.md │   └── host-v1.1.0 │   ├── main.c │   ├── Makefile │   └── README.md ├── LICENSE ├── maz_cpnt_debugcmd.c ├── maz_cpnt_debugcmd_config.h ├── maz_cpnt_debugcmd.h ├── maz_cpnt_list.c ├── maz_cpnt_list.h ├── portable │   └── linux │   └── maz_cpnt_debug.h └── README.md 6 directories, 14 files ``` 源码根目录下的 `maz_cpnt_` 开头的是组件核心代码。 在 `portable` 目录下的是移植时需要修改的代码。 在 `demo` 目录下的是目前已经移植在 Linux 主机上的示例参考代码。 后面在移植的章节将会详细的去介绍,这些代码文件该如何修改以及使用。 ## 文档 详细说明文档请查看 [文档](https://gitee.com/mazcpnt/debugcmd/tree/master/documents) 目录。 ## 版本记录 - V1.0.0 基本功能实现。 - V1.1.0 支持TAB自动补全接口。 - V1.2.0 支持导出JSON格式命令列表。