From 91265a7d7cddc10314335ffcfbfae7159c7cecb1 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 8 Feb 2023 16:06:23 +0000 Subject: Add new "$_shell(CMD)" internal function For testing a following patch, I wanted a way to send a SIGINT to GDB from a breakpoint condition. And I didn't want to do it from a Python breakpoint or Python function, as I wanted to exercise non-Python code paths. So I thought I'd add a new $_shell internal function, that runs a command under the shell, and returns the exit code. With this, I could write: (gdb) b foo if $_shell("kill -SIGINT $gdb_pid") != 0 || I think this is generally useful, hence I'm proposing it here. Here's the new function in action: (gdb) p $_shell("true") $1 = 0 (gdb) p $_shell("false") $2 = 1 (gdb) p $_shell("echo hello") hello $3 = 0 (gdb) p $_shell("foobar") bash: line 1: foobar: command not found $4 = 127 (gdb) help function _shell $_shell - execute a shell command and returns the result. Usage: $_shell (command) Returns the command's exit code: zero on success, non-zero otherwise. (gdb) NEWS and manual changes included. Approved-By: Andrew Burgess Approved-By: Tom Tromey Approved-By: Eli Zaretskii Change-Id: I7e36d451ee6b428cbf41fded415ae2d6b4efaa4e --- gdb/NEWS | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'gdb/NEWS') diff --git a/gdb/NEWS b/gdb/NEWS index 8ac8292..75cd11b 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -68,6 +68,16 @@ maintenance info frame-unwinders List the frame unwinders currently in effect, starting with the highest priority. +* New convenience function "$_shell", to execute a shell command and + return the result. This lets you run shell commands in expressions. + Some examples: + + (gdb) p $_shell("true") + $1 = 0 + (gdb) p $_shell("false") + $2 = 1 + (gdb) break func if $_shell("some command") == 0 + * MI changes ** mi now reports 'no-history' as a stop reason when hitting the end of the -- cgit v1.1