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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.