2.68 在GDB中拼接字符串
https://scz.617.cn/unix/201612011200.txt
Q:
如何在GDB脚本中或GDB提示符下拼接字符串?
A: Craig Ringer 2016-12-01
Concatenate GDB convenience variables - [2016-12-01] https://stackoverflow.com/questions/40917677/concatenate-gdb-convenience-variables
import gdb
class Concat ( gdb.Function ) :
def __init__ ( self ) :
super( Concat, self ).__init__( "concat" )
def _unwrap_string ( self, v ) :
try:
return v.string()
except gdb.error :
return str( v )
def invoke ( self, *args ) :
return ''.join( [self._unwrap_string(x) for x in args] )
Concat()
(gdb) source concat.py (gdb) set $x=$concat("works", " ", "when", " ", "detached") (gdb) p $x $1 = "works when detached"
D: 付程 2021-05-28
define concat2 set $ret=0 set $ret=$arg0 $arg1 end concat2 "aaa" "bbbb" p $ret
"set $ret=0"的意图是"重置",以此避免下一条set触发"Too many array elements"
参看:
https://github.com/basinilya/wisdom/blob/master/prog/gdb/gdb-faq.txt
GDB直接支持字符串拼接,擦,以前不知道可以这样写。这样的话,就不需要concat 函数或者define,原始需求GDB直接满足。
set $any=0 set $any="aaa" " " "bbbb" " " "ccccc" p $any
输出"aaa bbbb ccccc"