mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-02 09:36:15 +00:00
common: command: Add command execution tracer.
When using boot scripts it can become quite hard to understand which commands are actually executed during bootup (e.g. where is a kernel image loaded from or which DTB is in use). Shell scripts suffer from a similar problem and many shells address this problem with a command execution tracer (e.g. BASH has xtrace, which can be enabled by "set -x"). This patch introduces a command tracer for U-Boot, which prints every command with its arguments before it is executed. Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
This commit is contained in:
parent
62392675cd
commit
7ae31fccec
2 changed files with 25 additions and 0 deletions
11
cmd/Kconfig
11
cmd/Kconfig
|
@ -53,6 +53,17 @@ config SYS_PROMPT
|
||||||
This string is displayed in the command line to the left of the
|
This string is displayed in the command line to the left of the
|
||||||
cursor.
|
cursor.
|
||||||
|
|
||||||
|
config SYS_XTRACE
|
||||||
|
string "Command execution tracer"
|
||||||
|
depends on CMDLINE
|
||||||
|
default y if CMDLINE
|
||||||
|
help
|
||||||
|
This option enables the possiblity to print all commands before
|
||||||
|
executing them and after all variables are evaluated (similar
|
||||||
|
to Bash's xtrace/'set -x' feature).
|
||||||
|
To enable the tracer a variable "xtrace" needs to be defined in
|
||||||
|
the environment.
|
||||||
|
|
||||||
menu "Autoboot options"
|
menu "Autoboot options"
|
||||||
|
|
||||||
config AUTOBOOT
|
config AUTOBOOT
|
||||||
|
|
|
@ -574,6 +574,20 @@ enum command_ret_t cmd_process(int flag, int argc, char * const argv[],
|
||||||
enum command_ret_t rc = CMD_RET_SUCCESS;
|
enum command_ret_t rc = CMD_RET_SUCCESS;
|
||||||
cmd_tbl_t *cmdtp;
|
cmd_tbl_t *cmdtp;
|
||||||
|
|
||||||
|
#if defined(CONFIG_SYS_XTRACE)
|
||||||
|
char *xtrace;
|
||||||
|
|
||||||
|
xtrace = env_get("xtrace");
|
||||||
|
if (xtrace) {
|
||||||
|
puts("+");
|
||||||
|
for (int i = 0; i < argc; i++) {
|
||||||
|
puts(" ");
|
||||||
|
puts(argv[i]);
|
||||||
|
}
|
||||||
|
puts("\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Look up command in command table */
|
/* Look up command in command table */
|
||||||
cmdtp = find_cmd(argv[0]);
|
cmdtp = find_cmd(argv[0]);
|
||||||
if (cmdtp == NULL) {
|
if (cmdtp == NULL) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue