擅长:python、mysql、java
<p>gdb语法一团糟,比MS-DOS的命令行还糟糕。在</p>
<p>通过6个“简单”步骤,您可以将任意字符串传递给python:</p>
<pre><code>define foo
# reset convenience var., or get 'Too many array elements'
set $foo_arg0 = 0
# $arg0 expanded too early, can't use it directly in python
set $foo_arg0 = $arg0
#
# parse_and_eval() affected by print settings, wtf?
#
# don't print address of a string
set print addr off
# print long string
set print elements 0
# get rid of '<repeats n times>'
set print repeats unlimited
#
# parse_and_eval() returns quoted string. Unquote with eval
py s = eval(str(gdb.parse_and_eval("$foo_arg0")))
py print s
end
(gdb) foo "abc"
abc
(gdb) foo $val
def
(gdb) foo (char*)$rdi
/home/il/gammu-git/src/gammu/libgammu/tls/x86_64/libpthread.so.0
</code></pre>