Re: How to compare $arg0 with string literal?
Aleksey Midenkov <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAF8BazDbrxAj+F=nw+B9t5CwJDDtyOgJyRSkxXyCj=twX13AGQ@mail.gmail.com> |
On Fri, Mar 27, 2015 at 7:25 PM, Doug Evans <[email protected]> wrote: > On Thu, Mar 26, 2015 at 11:35 PM, Aleksey Midenkov <[email protected]> wrote: >> On Thu, Mar 26, 2015 at 9:28 PM, Doug Evans <[email protected]> wrote: >>> Such things are not supported in gdb's own scripting language. >>> However, with a bit of Python-provided magic ($_streq): >>> >>> define logging >>> if $argc == 1 >>> if $_streq("$arg0", "off") >>> set logging off >>> set logging file gdb.log >>> else >>> if $_streq("$arg0", "stop") >>> set logging off >>> else >>> set logging $arg0 >>> end >>> end >>> else >>> set logging $arg0 $arg1 >>> end >>> show logging >>> end >>> >>> Note that gdb's if/else syntax is a pain. >> >> Sure thing, gdb's syntax could be a bit richer... Also, if I get this >> error message does that mean that my gdb is not Python-powered? >> >> (gdb) p $_streq("off", "off") >> Invalid data type for function to be called. > > I'd use "py print 42" or some such as a more direct test of whether > python is present. > > btw, which version of gdb are you using? That host where this error occurs is always outdated. 7.2-60.el6_4.1 On my local machine is latest version and $_streq() works. On 7.2 'py print' : (gdb) py print 42 42 (gdb) py prind 42 File "<string>", line 1 prind 42 ^ SyntaxError: unexpected EOF while parsing Error while executing Python code.